Pagini recente » Cod sursa (job #674993) | Cod sursa (job #977889) | Cod sursa (job #12104) | Cod sursa (job #1629792) | Cod sursa (job #2354763)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
const int NMAX = 50005;
int n, m;
int grade[NMAX];
vector <int> G[NMAX];
queue <int> Q;
void citire(){
in >> n >> m;
for (int i = 0; i < n; ++i) {
int x, y;
in >> x >> y;
G[x].push_back (y);
grade[y]++;
}
}
void sortare(){
for (int i = 1; i <= n; ++i) {
if(grade[i] == 0){
Q.push (i);
}
}
while (!Q.empty ()){
int node = Q.front ();
Q.pop ();
out << node << " ";
for (int i = 0; i < G[node].size (); ++i) {
int vec = G[node][i];
grade[vec] --;
if(grade[vec] == 0)
Q.push (vec);
}
}
}
int main() {
ios::sync_with_stdio (false);
citire();
sortare();
return 0;
}