拓扑排序

 1 int c[N];
 2 int topo[N], t;
 3 bool dfs(int u)
 4 {
 5     c[u] = -1;
 6     for(int i = head[u]; ~i; i = e[i].to)
 7       {
 8            if(c[i] < 0) return false;
 9            else if(!c[i] && !dfs(i)) return false;
10       }  
11     c[u] = 1; topo[--t] = u;
12     return true;
13 } 14 bool toposort() 15 { 16 t = n; 17 memset(c, 0, sizeof(c)); 18 for(int i = 0; i < u; i++) 19 if(!c[i]) 20 if(!dfs(i)) 21 return false; 22 return true; 23 }

 

posted @ 2018-02-01 16:22  Schenker  阅读(139)  评论(0编辑  收藏  举报