代码:
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 100000 + 5;
int n,m;
vector<int> g[maxn];
vector<int> ret;
int deg[maxn];
int flag;
bool topsort()
{
for(int i = 1;i <= n;i++)
{
if(!deg[i]) ret.push_back(i);
}
for(int i = 0;i < ret.size();i++)
{
int u = ret[i];
for(int j = 0;j < g[u].size();j++)
{
int v = g[u][j];
--deg[v];
if(!deg[v]) ret.push_back(v);
}
}
return ret.size() == n;
}
int main()
{
cin >> n >> m;
while(m--)
{
int u,v;
cin >> u >> v;
g[u].push_back(v);
++deg[v];
}
topsort();
int p = 0;
for(int i = 0;i < n;i++)
{
cout << ret[i] << endl;
}
cout << flag;
return 0;
}
本蒟蒻认为没有错啊