1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 初始化优先队列q for i:=1 to n if indegree[i]=0 q.push(i) endif endfor if 队列q空 return false endif while 队列q不空 cnt:=cnt+1 u:=队列q弹出并返回值 j:=j+1 topo[j]:=u for k:=0 to u的出度数 v:=head[u,i] indegree[v]:=indegree[v]-1 if(indegree[v]=0) q.push(v) endif endfor endwhile if cnt=n return false else return true endif
|