Pagini recente » Cod sursa (job #1985438) | Cod sursa (job #2460066) | Cod sursa (job #588735) | Cod sursa (job #3201030) | Cod sursa (job #2493151)
#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() {
cin.sync_with_stdio(0);
cin.tie(0);
cin>>n>>m;
int a, b;
for(int i = 0; i < m; i++) {
cin>>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();
cout<<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;
}