Pagini recente » Cod sursa (job #3285773) | Cod sursa (job #2609952) | Cod sursa (job #843003) | Cod sursa (job #3186320) | Cod sursa (job #1455414)
#include <stdio.h>
#include <vector>
#include <stack>
#define ALB 0
#define GRI 1
#define NEGRU 2
#define NMAX 50005
using namespace std;
vector <int> V[NMAX];
int N, M, i, j;
stack <int> S;
bool color[NMAX];
void DFS(int index){
color[index] = GRI;
for (j=0; j<V[index].size(); j++)
if (color[V[index][j]] == ALB)
DFS(V[index][j]);
color[index] = NEGRU;
S.push(index);
}
int main(){
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
int x, y;
scanf("%d %d ", &N, &M);
for (i=0; i<M; i++){
scanf("%d %d ", &x, &y);
V[x].push_back(y);
}
//for (i=1; i<=N; i++){
// for (j=0; j<V[i].size(); j++)
// printf("%d ", V[i][j]);
// printf("\n");
//}
for(i=1; i<=N; i++){
if(color[i] == ALB)
DFS(i);
}
while(!S.empty()){
printf("%d ", S.top());
S.pop();
}
return 0;
}