bool Topo()
{
int sum = 0;
while(1)
{
queue <int> Q;
for(int i = 1; i <= n; i++)
if(!in[i])
Q.push(i);
sum += Q.size();
if(sum == n)
return true;
if(!Q.size())
return false;
while(!Q.empty())
{
int u = Q.front(); Q.pop();
in[u]--;
for(int v = first[u]; v != -1; v = e[v].next)
{
in[e[v].v]--;
}
}
}
}
拓扑排序模版
最新推荐文章于 2024-05-26 02:36:44 发布