Pagini recente » Cod sursa (job #2347548) | Cod sursa (job #784284) | Cod sursa (job #931919) | Cod sursa (job #2353267) | Cod sursa (job #1671668)
#include <stdio.h>
#include <vector>
#include <stack>
using namespace std;
vector<int> vecini[50001];
bool color[50001] = {0};
stack<int> myStack;
void DFS(int index){
color[index] = 1;
for(int i = 0; i < vecini[index].size(); i++){
if(color[vecini[index][i]] == 0)
DFS(vecini[index][i]);
}
color[index] = 2;
myStack.push(index);
}
int main(){
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
int N, M, x, y;
scanf("%d %d ", &N, &M);
for(int i = 0; i < M; i++){
scanf("%d %d ", &x, &y);
vecini[x].push_back(y);
}
for(int i = 0; i <= M; i++){
if(color[i] == 0)
DFS(i);
}
while(!myStack.empty()){
printf("%d ",myStack.top());
myStack.pop();
}
return 0;
}