悲苦的图论!
查看原帖
悲苦的图论!
1050431
DevilsFlame楼主2024/2/23 13:49

才学的图论,还不知道哪里出现问题QAQ!我觉得图论和树很像,没啥区别,于是WA了4个点。分值:2/3

#include<bits/stdc++.h>
using namespace std;
struct no{
	int m;//最大编号
	vector <int> c;//与x点连同
}s[1011];
int n,m,a,b;
bool q[1011];//算是优化吧,个人习惯。
int dfs(int x){
	if(q[x])return s[x].m;//记忆化,习惯
	q[x]=1;//找过了
	s[x].m=x;//赋值
	for(int i=0;i<s[x].c.size();i++){
		s[x].m=max(s[x].m,dfs(s[x].c[i]));//搜最大
	}
	return s[x].m;//返回
}
int main(){
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d %d",&a,&b);
		s[a].c.push_back(b);//存入目标点
	}
	for(int i=1;i<=n;i++){
		if(!q[i])
			s[i].m=dfs(i);
		printf("%d ",s[i].m);
	}
	printf("\n");
	return 0;
}
2024/2/23 13:49
加载中...