Skip to content

Instantly share code, notes, and snippets.

@heliy
Last active August 29, 2015 13:57
Show Gist options
  • Save heliy/9869320 to your computer and use it in GitHub Desktop.
Save heliy/9869320 to your computer and use it in GitHub Desktop.
网络上n层相邻节点 广度优先
import sys
def putin(name,other,peers):
if name in peers.keys():
peers[name].append(other)
else:
peers[name]=[other]
def take_peers(filename,split_sign="\t"):
inters=open(filename,'r').read().splitlines()
peers={}
for inter in inters:
[fir,sec]=inter.split(split_sign)
putin(fir,sec,peers)
putin(sec,fir,peers)
return peers
def adjacent(peers,seed,need_level):
if need_level==0:
return []
if peers[seed]==None:
return []
adjas=[]
for leaf in peers[seed]:
if peers[leaf]==None:
continue
adjas=adjas+[leaf]
peers[seed]=None
for leaf in adjas:
adjas=adjas+adjacent(peers,leaf,need_level-1)
return adjas
if __name__=="__main__":
for adja in adjacent(take_peers(sys.argv[1]),sys.argv[2],int(sys.argv[3])):
print adja
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment