P3916 图的遍历
#include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> #include<string> using namespace std; vector<int> a[100100]; int v,n,zdz[100100],aw; bool vis[100100]; void dfs(int i,int k) { vis[i]=true; zdz[i]=zdz[k]; for(int j=0;j<a[i].size();j++) { if(vis[a[i][j]]==0) dfs(a[i][j],k); } } int main() { cin>>v>>n; for(int i=1;i<=n;i++) { int x,y; cin>>x>>y; a[y].push_back(x); } for(int i=1;i<=v;i++) zdz[i]=i; for(int i=v;i>=1;i--) { //memset(vis,0,sizeof(vis)); dfs(i,i); } for(int i=1;i<=v;i++) { cout<<zdz[i]<<" "; } }