万紫千红求助!!
  • 板块P3916 图的遍历
  • 楼主jikky
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/5 09:42
  • 上次更新2024/7/5 11:42:16
查看原帖
万紫千红求助!!
1382982
jikky楼主2024/7/5 09:42
#include<bits/stdc++.h>
using namespace std;
int head[50001];
int anhead[50001];
int n,m;
struct edge{
	int to,next=0;
}a[50001];
int cnt=1;
void add(int u,int v){
	a[cnt].to=v;
	a[cnt].next=head[u];
	head[u]=cnt;
	cnt++;
}
int ans[50001]={};
int main(){
	cin>>n>>m;
	int u,v;
	for(int i=0;i<m;i++){
		scanf("%d%d",&u,&v);
		add(u,v);
		//add(v,u);
	}
	for(int i=1;i<=n;i++){
		anhead[i]=head[i];
		ans[i]=i;
		while(head[i]!=0){
			if(a[head[i]].to>ans[i]){
				ans[i]=a[head[i]].to;	
			}
			head[i]=a[head[i]].next;
		}
	}
	for(int i=1;i<n;i++){
		while(anhead[i]!=0){
			if(ans[a[anhead[i]].to]>ans[i]){
				ans[i]=ans[a[anhead[i]].to];
			}
			anhead[i]=a[anhead[i]].next;
		}
	}
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<" ";
	}
	return 0;
}
2024/7/5 09:42
加载中...