ACM模板库

ACM模板库


拓扑排序

<pre><code>vector&lt;int&gt; G[maxn]; int c[maxn]; vector&lt;int&gt; topo; bool dfs(int u){ c[u] = -1; for(int i = 0; i &lt; G[u].size(); i++){ int v = G[u][i]; if(c[v] &lt; 0) return false; else if(!c[v]){ if(!dfs(v)) return false; } } c[u] = 1; topo.push_back(u); return true; } bool toposort(){ topo.clear(); memset(c, 0, sizeof(c)); for(int u = 1; u &lt;= n; u++){//n为顶点个数 if(!c[u]){ if(!dfs(u)) return false; } } reverse(topo.begin(), topo.end()); return true; }</code></pre>

页面列表

ITEM_HTML