Pagini recente » Cod sursa (job #488268) | Cod sursa (job #110539) | Cod sursa (job #64263) | Cod sursa (job #2921418) | Cod sursa (job #504773)
Cod sursa(job #504773)
#include <cstdio>
#define nmax 50000
using namespace std;
FILE *fin=fopen("sortaret.in", "r");
FILE *fout=fopen("sortaret.out", "w");
int uz[nmax], f[nmax];
int n, m, nr, x, y;
struct lista
{
int inf;
lista *nod;
} *G[nmax];
void add(int i, int j)
{
lista *p;
p = new lista;
p->inf = j;
p->nod = G[i];
G[i] = p;
}
void dfs(int k)
{
lista *p;
uz[k] = 1;
for(p=G[k]; p; p=p->nod)
if(!uz[p->inf])
dfs(p->inf);
f[++nr]=k;
}
int main()
{
int i, j;
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=m; ++i)
{
fscanf(fin, "%d%d", &x, &y);
add(x, y);
}
for(i=1; i<=n; ++i)
if(!uz[i])
dfs(i);
for(i=n; i>=1; --i)
fprintf(fout, "%d ", f[i]);
return 0;
}