其他分享
首页 > 其他分享> > P3916 图的遍历

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