在有向無環圖中,通過找拓撲序,可以從頭到尾轉移狀態,比spfa少走了許多邊。
記錄每個點的入度,每次遇到一個點其入度-1,直到入度爲0,變成起始點。
void tuopu()
{
queue<int>Q;
for(int i=1;i<=n;i++)
{
if(in[i]==0)
{
Q.push(i);
}
}
while(!Q.empty())
{
int u=Q.front();
Q.pop();
for(int i=head[u];i!=-1;i=edge[i],next)
{
int v=edge[i].to;
in[v]--;
if(!in[v])
{
Q.push(v);
}
}
}
}