比赛 树形数据结构进阶(再进阶) 评测结果 MMMMMMMMMMMMMMMMMMMM
题目名称 雨天的尾巴 最终得分 0
用户昵称 李奇文 运行时间 0.020 s
代码语言 C++ 内存使用 1.35 MiB
提交时间 2025-04-19 11:15:59
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[2005][2005],mp[2005],f[2005][100005];
int findr(int x,int y,int z){
	if(x==y){
		return 1;
	}
	int ab=0;
	for(int i=1;i<=n;i++){
		if(a[x][i]&&mp[i]==0){
			mp[i]=1;
			if(findr(i,y,z)){
				f[i][z]++;
				mp[i]=0;
				ab=1;
				break;
			}
			mp[i]=0;
		}
	}
	return ab;
}
int main(){
	freopen("Rainbows.in","r",stdin);
	freopen("Rainbows.out","w",stdout);
	std::cin>>n>>m;
	for(int i=2;i<=n;i++){
		int b,c;
		std::cin>>b>>c;
		a[c][b]=1;
		a[b][c]=1;
	}	
	for(int i=1;i<=m;i++){
		int x,y,z;
		std::cin>>x>>y>>z;
		f[x][z]++;
		mp[x]=1;
		findr(x,y,z);
		mp[x]=0;
	}	
	for(int i=1;i<=n;i++){
		int maxn=0,ans=0;
		for(int j=1;j<=100000;j++){
			if(f[i][j]>maxn) maxn=f[i][j],ans=j;
		}
		std::cout<<ans<<endl;
	}
	return 0;
}