Advertisement
Bualrond

Untitled

Nov 9th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <iostream>
  3. #include <stack>
  4. #include <vector>
  5. using namespace std;
  6. vector<int>g[111];
  7. stack<int>ans;
  8. int used[111]={0};
  9. void dfs(int q){
  10.     int see[111]={0};
  11.     stack<int>st;
  12.     st.push(q);
  13.     see[q] = 1;
  14.     while(!st.empty()){
  15.         bool flag=false;
  16.         int n = st.top();
  17.         st.pop();
  18.         for(int i = 0;i < g[n].size();i++){
  19.             if(see[g[n][i]] == 0 && used[g[n][i]] == 0){
  20.                 flag = true;
  21.                 see[g[n][i]] = 1;
  22.                 st.push(g[n][i]);
  23.             }
  24.         }
  25.         if(!flag){
  26.             ans.push(n);
  27.             used[n]=1;
  28.         }
  29.     }
  30. }
  31.  
  32. int main(){
  33.     int n;
  34.     cin >> n;
  35.     for(int i = 0; i<n; i++){
  36.         int u,y;
  37.         cin >> u >> y;
  38.         g[u].push_back(y);
  39.     }
  40.     for(int i=1;i<n;i++){
  41.         dfs(i);
  42.     }
  43.     while(!ans.empty()){
  44.         cout << ans.top() << endl;
  45.         ans.pop();
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement