Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iostream>
- #include <stack>
- #include <vector>
- using namespace std;
- vector<int>g[111];
- stack<int>ans;
- int used[111]={0};
- void dfs(int q){
- int see[111]={0};
- stack<int>st;
- st.push(q);
- see[q] = 1;
- while(!st.empty()){
- bool flag=false;
- int n = st.top();
- st.pop();
- for(int i = 0;i < g[n].size();i++){
- if(see[g[n][i]] == 0 && used[g[n][i]] == 0){
- flag = true;
- see[g[n][i]] = 1;
- st.push(g[n][i]);
- }
- }
- if(!flag){
- ans.push(n);
- used[n]=1;
- }
- }
- }
- int main(){
- int n;
- cin >> n;
- for(int i = 0; i<n; i++){
- int u,y;
- cin >> u >> y;
- g[u].push_back(y);
- }
- for(int i=1;i<n;i++){
- dfs(i);
- }
- while(!ans.empty()){
- cout << ans.top() << endl;
- ans.pop();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement