Pagini recente » Cod sursa (job #2071370) | Cod sursa (job #714930) | Cod sursa (job #2695714) | Cod sursa (job #2210324) | Cod sursa (job #1644924)
#include <iostream>
#include <fstream>
#include <vector>
#define NMax 50010
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int> v[NMax];
vector<int> rv[NMax];
int n,m,nr;
int CanGo[NMax];
int over[NMax];
int _list[NMax];
void dfs(int nod)
{
bool ok =1;
for(int i=0;i<rv[nod].size();i++)
if(!over[rv[nod][i]])
{
ok=0;
break;
}
if(ok)
{
over[nod]=1;
_list[++nr]=nod;
}
for(int i=0;i<v[nod].size();i++)
dfs(v[nod][i]);
}
int main()
{
int a,b,j;
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>a>>b;
for(j=0;j<v[a].size();j++)
if(v[a][j]==b)
break;
if(j==v[a].size())
{
v[a].push_back(b);
rv[b].push_back(a);
}
CanGo[b]=-1;
}
for(int i=1;i<=m;i++)
if(CanGo[i]==0)
dfs(i);
for(int i=1;i<=n;i++)
fout<<_list[i]<<' ';
return 0;
}