Pagini recente » Cod sursa (job #3355719) | Cod sursa (job #3301118) | Cod sursa (job #181282) | Cod sursa (job #1482363) | Cod sursa (job #411766)
Cod sursa(job #411766)
#include <stdio.h>
#include <vector.h>
#include <deque>
#define saiz 100010
using namespace std;
vector <int> vec[saiz];
deque <int> rez;
int grad[saiz];
int n,m;
int viz[saiz];
void citire()
{
int a,b;
scanf ("%d %d",&n,&m);
for (int i=0;i<m;i++)
{
scanf ("%d %d",&a,&b);
grad[b]++;
vec[a].push_back(b);
}
for (int i=1;i<=n;i++)
if (grad[i]==0)
{
rez.push_front(i);
viz[i]=1;
}
}
void solve()
{
int p1;
for (int i=0;i<rez.size();i++)
{
p1=rez[i];
for (int j=0;j<vec[p1].size();j++)
if (!viz[vec[p1][j]])
{
grad[vec[p1][j]]--;
if (grad[vec[p1][j]]==0)
{
rez.push_back(vec[p1][j]);
viz[vec[p1][j]]=1;
}
}
}
for (int i=0;i<rez.size();i++)
printf("%d ",rez[i]);
printf("\n");
}
int main ()
{
freopen ("sortaret.in","r",stdin);
freopen ("sortaret.out","w",stdout);
citire();
solve();
return 0;
}