Pagini recente » Cod sursa (job #1576419) | Cod sursa (job #1877671) | Cod sursa (job #1411577) | Cod sursa (job #2561830) | Cod sursa (job #676238)
Cod sursa(job #676238)
#include <cstdio>
#include <list>
#define nmax 50010
using namespace std;
list <int> a[nmax];
list <int> sol;
int gr[nmax];
FILE *f,*g;
int n,m;
void read() {
int i,x,y;
f=fopen("sortaret.in","r");
g=fopen("sortaret.out","w");
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=m;i++) {
fscanf(f,"%d%d",&x,&y);
gr[y]++;
a[x].push_back(y);
}
}
void solve() {
int i;
for (i=1;i<=n;i++)
if (!gr[i])
sol.push_back(i);
for (list <int>::iterator p=sol.begin();p!=sol.end();p++)
for (list <int>::iterator q=a[*p].begin();q!=a[*p].end();q++) {
gr[*q]--;
if (gr[*q]==0) {
sol.push_back(*q);
}
}
}
void write() {
for (list <int>::iterator p=sol.begin();p!=sol.end();p++)
fprintf(g,"%d ",*p);
fclose(g);
}
int main() {
read();
solve();
write();
}