刚学图论勿喷
#include<bits/stdc++.h>
using namespace std;
const int N=5e5;
vector<int> e[N];
vector<int> ans;
int ind[N];
queue<int>q;
int n,m;
bool f=0;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
e[u].push_back(v);
ind[v]++;
}
bool flag=1;
for(int i=1;i<=n;i++)
{
if(ind[i]==0)
{
flag=!flag;
q.push(i);
if(flag==1)
{
f=1;
}
}
}
while(!q.empty())
{
int u=q.front();
q.pop();
ans.push_back(u);
for(int i=0;i<e[u].size();i++)
{
int v=e[u][i];
ind[v]--;
if(ind[v]==0)
{
q.push(v);
}
}
}
for(int i:ans)
{
cout<<i<<'\n';
}
cout<<f;
return 0;
}