显示错的5个测试点都是最后一个数的问题
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,rd[N],dis[N],cnt=0,abc=0,cba=0,ans=0;
vector<int>g[N];
queue<int>q;
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
rd[v]++;
}
for(int i=1;i<=n;i++){
if(!rd[i]){
q.push(i);
abc++;
}
}
if(abc){
ans=1;
}
while(!q.empty()){
int k=q.front();
q.pop();
cout<<k<<endl;
for(auto i:g[k]){
rd[i]--;
dis[i]=max(dis[i],dis[k+1]);
if(!rd[i]){
q.push(i);
cba++;
}
}
if(cba){
ans=1;
}
}
cout<<ans;
return 0;
}