P3916 图的遍历
作者:互联网
原题:点我
代码:
//反向建图
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int ans[N];
vector<int>gra[N];
void dfs(int a,int b)
{
if(ans[a]) return;//已经有数字了
ans[a]=b;//最差都是自己
for(int i=0;i<gra[a].size();i++)
{
dfs(gra[a][i],b);//a-->b,i-->a
}
}
int main()
{
int n,m,a,b;
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>a>>b;//a-->b
gra[b].push_back(a);//到b的有a
}
for(int i=n;i>=1;i--) dfs(i,i);
for(int i=1;i<=n;i++)
{
if(i!=1) cout<<" ";
cout<<ans[i];
}
return 0;
}
标签:遍历,int,gra,cin,dfs,P3916,--,ans 来源: https://blog.csdn.net/karshey/article/details/116860924