Pagini recente » Cod sursa (job #110138) | Cod sursa (job #760015) | Cod sursa (job #1918048) | Cod sursa (job #1275478) | Cod sursa (job #1564547)
#include <stdio.h>
#define N_MAX 100
#define M_MAX N_MAX * (N_MAX - 1)
FILE *f, *g;
int n, m;
int lists[N_MAX][N_MAX];
bool viz[N_MAX];
int nods[N_MAX];
int ind;
void citire();
void DFS(int);
int main()
{
citire();
for (int i = 1; i <= n; ++i){
if (!viz[i])
DFS(i);
}
for (int i = n; i > 0; --i){
fprintf(g, "%d ", nods[i]);
}
fprintf(g, "\n");
fclose(f);
fclose(g);
return 0;
}
void citire(){
f = fopen("sortaret.in", "r");
g = fopen("sortaret.out", "w");
int x, y;
fscanf(f, "%d %d\n", &n, &m);
for (int i = 1; i <= m; ++i){
fscanf(f, "%d %d\n", &x, &y);
lists[x][++lists[x][0]] = y;
}
}
void DFS(int k){
viz[k] = true;
for (int i = 1; i <= lists[k][0]; ++i){
if (!viz[lists[k][i]]){
DFS(lists[k][i]);
}
}
nods[++ind] = k;
}