Pagini recente » Cod sursa (job #902391) | Cod sursa (job #3247519) | Cod sursa (job #3003294) | Cod sursa (job #2445336) | Cod sursa (job #2493152)
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int i, j, n, m , k;
vector<int> graph[50001];
vector<int> noIncomingEdges;
int incoming[50001];
int main() {
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
fin>>n>>m;
int a, b;
for(int i = 0; i < m; i++) {
fin>>a>>b;
graph[a].push_back(b);
incoming[b]++;
}
for (int i = 1; i <= n; i++)
if (incoming[i] == 0)
noIncomingEdges.push_back(i);
while(!noIncomingEdges.empty()) {
int currNode = noIncomingEdges.back();
fout<<currNode<<" ";
noIncomingEdges.pop_back();
int size = graph[currNode].size();
for (int i = 0; i < size; i++) {
int nextNode = graph[currNode][i];
incoming[nextNode]--;
if (incoming[nextNode] == 0)
noIncomingEdges.push_back(nextNode);
}
}
return 0;
}