Pagini recente » Cod sursa (job #1143732) | Cod sursa (job #1126052) | Cod sursa (job #2671271) | preONI 2005 runda #1 - solutii | Cod sursa (job #1146159)
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 50005
int n, m, i, a, b, inc, sf, x;
int grint[nmax], co[nmax];
vector<int> ma[nmax];
vector<int> ::iterator it;
void citire()
{
scanf("%ld %ld",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%ld %ld",&a,&b);
ma[a].push_back(b); grint[b]++;
}
}
void rezolvare()
{
inc=1;
for (i=1;i<=n;i++)
if (grint[i]==0)
co[++sf]=i;
while(inc<=sf)
{
x=co[inc]; inc++;
for (it=ma[x].begin();it!=ma[x].end();it++)
{
grint[*it]--;
if (grint[*it]==0)
co[++sf]=*it;
}
}
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
citire();
rezolvare();
for (i=1;i<=n;i++)
printf("%ld ",co[i]);
return 0;
}