Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef vector<int> vi;
- int n,m; //n<100
- vector<vi> adjList;
- vector<bool> visited;
- vector<int> tpOrder;
- void dfs2(int u){
- visited[u]=true;
- for(int i=0;i<adjList[u].size();i++){
- int v=adjList[u][i];
- if(!visited[v]){
- dfs2(v);
- }
- }
- tpOrder.push_back(u);
- }
- int main()
- {
- while(scanf("%d%d",&n,&m),n||m){
- adjList.assign(104,vi(0));
- visited.assign(104,false);
- tpOrder.clear();
- int a,b;
- for(int i=0;i<m;i++){
- scanf("%d%d",&a,&b);
- adjList[a].push_back(b);
- }
- for(int node=1;node<=n;node++){
- if(!visited[node]){
- dfs2(node);
- }
- }
- //reverse tpOrder
- for(int i=n-1;i>=0;i--){
- printf("%d",tpOrder[i]);
- printf(i>0?" ":"\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement