#__author__=lx #__date__=2011-10-03 #__brief__=BFS from collections import deque def BFS( G, s ): d = [] color = [] p = [] L = deque() for i in range( len( G ) ): if i != s: color.append( 'white' ) d.append( 'helloworld' ) p.append( None ) else: color.append( 'gray' ) d.append( 0 ) p.append( None ) L.append( s ) while ( len( L ) != 0 ): u = L.popleft() for v in G[u]: if cmp( color[v-1],'white' ) == 0: color[v-1] = 'gray' d[v-1] = d[u] + 1 p[v-1] = u L.append(v-1) color[u] = 'black' print u + 1 if __name__ == "__main__": l1 = [ 2, 3 ] l2 = [ 4, 5, 1 ] l3 = [ 6, 7, 1 ] l4 = [ 2, 8 ] l5 = [ 2, 8 ] l6 = [ 3, 7 ] l7 = [ 3, 6 ] l8 = [ 4, 5 ] l = [ l1, l2, l3, l4, l5, l6, l7, l8 ] BFS( l, 1 )