对于拓扑排序我的理解就是在一个无环有向的图中,从入度为零的点到出度为零的点找一个路径。
#include <bits/stdc++>
using namespace std;
const int N=1e5+7;
int in[N],out[N],num[N],ans;
vector<int>ne[N];
queue<int>q;
signed main()
{
int n,m;cin>>n>>m;
while(m--)
{
int a,b;
cin>>a>>b;
in[b]++,out[a]++;
ne[a].push_back(b);
}
for(int i=1;i<=n;i++)//寻找入度为零的点,让其作为初始点
{
if(!in[i])
{
q.push(i);
}
}
while(!q.empty())
{
int t=q.front();
q.pop();
int len=ne[t].size();//这个点的出度数量
for(int i=0;i<len;i++)
{
int num=ne[t][i];
in[num]--;
if(in[num]==0)q.push(next);//入度为零就加入
}
}
return 0;
}