Nu aveti permisiuni pentru a descarca fisierul grader_test20.in
Cod sursa(job #705944)
Utilizator | Data | 5 martie 2012 11:09:43 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.74 kb |
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector <long> A[50001];
queue <long> coada;
long G[50001], x, y, N, M, i, j, elc;
bool viz[50001];
void sortaret(long i) {
long j = 0;
viz[i] = true;
printf("%ld ", i);
for (j = 0; j < G[i]; ++j) {
if ( !viz[A[i][j]] ) {
sortaret(A[i][j]);
}
}
}
int main() {
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%ld %ld", &N, &M);
for (i = 1; i <= M; ++i) {
scanf("%ld %ld", &x, &y);
A[x].push_back(y);
}
for (i = 1; i <= N; ++i) {
G[i] = A[i].size();
}
for (i = 1; i <= N; ++i) {
if ( !viz[i] ) {
sortaret(i);
}
}
printf("\n");
return 0;
}