Pagini recente » Cod sursa (job #1957408) | Cod sursa (job #3259885) | Cod sursa (job #226926) | Cod sursa (job #870012) | Cod sursa (job #1671671)
#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 = 1; i <= N; i++){
if(color[i] == 0)
DFS(i);
}
while(!myStack.empty()){
printf("%d ",myStack.top());
myStack.pop();
}
return 0;
}