Pagini recente » Cod sursa (job #3195648) | Cod sursa (job #3263611) | Cod sursa (job #2381767) | Cod sursa (job #32635) | Cod sursa (job #759124)
Cod sursa(job #759124)
#include <stdio.h>
#include <list>
using namespace std;
int main() {
FILE *f = fopen("sortaret.in", "r"), *g = fopen("sortaret.out", "w");
int n, m;
fscanf(f, "%d %d", &n, &m);
int *gr = new int[n];
for(int i = 0; i < n; i++) gr[i] = 0;
list<int> liste[n];
int *Q = new int[n], c = 0;
for(int i = 0; i < m; i++) {
int x, y;
fscanf(f, "%d %d", &x, &y);
liste[x - 1].push_back(y - 1);
gr[y - 1] ++;
}
for(int i = 0; i < n; i++) {
if(gr[i] == 0)
Q[c++] = i;
}
for(int i = 0; i < n; i++) {
for(list<int>::iterator j = liste[i].begin(), l = liste[i].end(); j != l; j++) {
gr[*j]--;
if(gr[*j] == 0) {
Q[c++] = *j;
}
}
}
for(int i = 0; i < c; i++)
fprintf(g, "%d ", Q[i] + 1);
fclose(f);
fclose(g);
return 0;
}