Pagini recente » Cod sursa (job #2473727) | Cod sursa (job #411482) | Cod sursa (job #2764556) | Cod sursa (job #2308293) | Cod sursa (job #1108761)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int Nmax=50001;
vector <int> v[Nmax],l;
int grad[Nmax],m,n,x,y,viz[Nmax];
ofstream out("sortaret.out");
void dfs(int a)
{
for(int k=0; k<v[a].size(); k++)
{
viz[v[a][k]]=1;
grad[v[a][k]]--;
if(grad[v[a][k]]==0)
{
l.push_back(v[a][k]);
dfs(v[a][k]);
}
}
}
int main()
{
ifstream in("sortaret.in");
in>>n>>m;
for(int i=0; i<m; i++)
{
in>>x>>y;
v[x].push_back(y);
grad[y]++;
}
for(int i=1; i<=n; i++)
{
if(grad[i]==0 && viz[i]==0)
{
l.push_back(i);
dfs(i);
}
}
for(int i=0; i<n; i++)
out<<l[i]<<" ";
in.close();
out.close();
return 0;
}