Pagini recente » Cod sursa (job #31338) | Borderou de evaluare (job #2509662) | Borderou de evaluare (job #180029) | Cod sursa (job #1973142) | Cod sursa (job #627962)
Cod sursa(job #627962)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
FILE *in = fopen ("sortaret.in", "r"), *out = fopen ("sortaret.out", "w");
vector <int> graf[50001], sort;
queue <int> S;
int gradInterior[50001];
int main(){
int n, m, i, j, x, y;
fscanf (in, "%d %d", &n, &m);
for (i = 0; i < m; i++){
fscanf(in, "%d %d", &x, &y);
graf[x].push_back(y);
gradInterior[y]++;
}
for (i = 1; i <=n ; i++) if (gradInterior[i] == 0) S.push(i);
while (!S.empty())
{
int nod = S.front();
sort.push_back(nod);
for (j = 0; j < graf[nod].size(); j++)
if ( --gradInterior[graf[nod][j]] == 0) S.push(graf[nod][j]) ;
S.pop();
}
for (i = 0; i < sort.size(); i++)
fprintf (out, "%d ", sort[i]);
return 0;
}