用图的遍历可做,找largest strongly connected component. 反正各个点都只有一个 degree,BFS/DFS都一样。 用python写个: visited=[0 for i in range(n)] max_loop_number = 0 k = 0 for i in range(n): loop_number = 0 while visited[i] == 0: loop_number += 1 visited[i]=1 i = A[i] if loop_number > max_loop_number: max_loop_number = loop_number k = i return k 每个点都只遍历一遍,时间theta(n)
d*t
14 楼
哎,没想到用一个visited array
【在 m****9 的大作中提到】 : 用图的遍历可做,找largest strongly connected component. 反正各个点都只有一个 : degree,BFS/DFS都一样。 : 用python写个: : visited=[0 for i in range(n)] : max_loop_number = 0 : k = 0 : for i in range(n): : loop_number = 0 : while visited[i] == 0: : loop_number += 1