1 solutions
-
2
非常规解法
#include<bits/stdc++.h> using namespace std; vector<int>p[500010]; bool vis[500010]; stack<int>ans; int n; void dfs(int x){ for(auto u:p[x]){ if(vis[u]) continue; dfs(u); } vis[x]=1; ans.push(x); }int main(){ cin>>n; for(int i=1;i<=n;i++){ int x; while(cin>>x&&x) p[i].push_back(x); } for(int i=1;i<=n;i++) if(!vis[i]) dfs(i); while(!ans.empty()) cout<<ans.top()<<' ', ans.pop(); }
- 1
Information
- ID
- 7777
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 3
- Tags
- # Submissions
- 6
- Accepted
- 4
- Uploaded By