Pagini recente » Cod sursa (job #2396110) | Cod sursa (job #911465) | Borderou de evaluare (job #1736521) | Cod sursa (job #3225986) | Cod sursa (job #2390706)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*g;
struct graf
{
int node,next;
}v[100002];
int start[50002],fr[50002];
int n,m;
void read()
{ int x,y,k=0;
fscanf(f,"%d %d",&n,&m);
for(int i=1; i<=m; i++)
{
fscanf(f,"%d %d",&x,&y);
v[++k].node=y;
v[k].next=start[x];
start[x]=k;
fr[y]++;
}
}
void solve()
{ int ok=1;
while(ok)
{ ok=0;
for(int i=1; i<=n;i++)
{
if(!fr[i])
{ ok=1;
fprintf(g,"%d ",i);
for(int j=start[i]; j; j=v[j].next)
{
fr[v[j].node]--;
}
fr[i]=-1;
}
}
}
}
int main()
{ f = fopen("sortaret.in", "r");
g = fopen("sortaret.out", "w");
read();
solve();
//write();
fclose(f);
fclose(g);
return 0;
}