Python版图的深度/广度搜索
#_*_coding:utf_8_import sysclass Graph(): def __init__(self): visited = [] edges = [[]] queue = [] V = 0 E = 0 def initGraph(self): self.V, self.E = map(int, sys.stdin.readline().split()) self.visited = [0 for i in range(self.V+1)] self.edges = [[] for i in range(self.V+1)] for i in range(self.E): f, t = map(int, sys.stdin.readline().split()) self.edges[f].append(t) #self.edges[t].append(f) def dfsGraph(self, u): self.visited[u] = 1 print u, for i in range(len(self.edges[u])): if self.visited[self.edges[u][i]]==0: self.dfsGraph(self.edges[u][i]) def bfsGraph(self, src): self.visited = [0 for i in range(self.V+1)] self.queue = [] self.queue.append(src) self.visited[src] = 1 while len(self.queue)!=0: u = self.queue.pop() print u , for i in range(len(self.edges[u])): v = self.edges[u][i] if self.visited[v]==0: self.visited[v] = 1 self.queue.append(v) def main(self): self.initGraph() self.dfsGraph(1) print '\n' self.bfsGraph(1) graph = Graph()graph.main()#self.V, self.E = map(int, sys.stdin.readline().split()),这种输入方式是为了与acm比赛时的格式相符,而且也更合理,比raw_input()要好用一些