Pagini recente » Cod sursa (job #2717540) | Cod sursa (job #823931) | Cod sursa (job #728620) | Cod sursa (job #1598521) | Cod sursa (job #2425441)
#include <fstream>
#include <list>
#include <vector>
#include <queue>
int main() {
int N, M;
std::ifstream f("sortaret.in");
std::ofstream g("sortaret.out");
f >> N >> M;
std::list<int> *adj = new std::list<int>[N];
std::vector<int> grade(N);
for(int i = 0; i < M; ++i) {
int X, Y;
f >> X >> Y;
adj[X].push_back(Y);
grade[Y]++;
}
std::queue<int> result;
for(size_t i = 0; i < grade.size(); ++i)
if(grade[i] == 0)
result.push(i);
while(!result.empty()) {
int st = result.front();
g << st + 1 << ' ';
result.pop();
for(int nod : adj[st]) {
grade[nod]--;
if(!grade[nod])
result.push(nod);
}
}
return 0;
}