比赛 NOIP2025模拟赛4 评测结果 AAAAAAAAAA
题目名称 Good Influencers 最终得分 100
用户昵称 特朗普 运行时间 0.251 s
代码语言 C++ 内存使用 10.81 MiB
提交时间 2025-11-27 08:43:53
显示代码纯文本
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
// ciallo
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,inf=0x3f3f3f3f;
#define ll long long
int n,c[N];
ll f[N][3];
char s[N];
vector<int> G[N];
void dfs(int u,int fa){
	if(s[u]=='Y'){
		f[u][0]=inf;f[u][1]=0;f[u][2]=c[u];
		for(auto v:G[u]){
			if(v==fa)continue;
			dfs(v,u);
			f[u][2]+=min(f[v][0],min(f[v][1],f[v][2]));
			f[u][1]+=min(f[v][1],f[v][2]);
		}
	}else{
		f[u][0]=0;f[u][1]=inf;f[u][2]=inf;
		ll x=c[u],y=0;
		for(auto v:G[u]){
			if(v==fa)continue;
			dfs(v,u);
			x+=min(f[v][0],min(f[v][1],f[v][2]));
			y+=min(f[v][1],f[v][2]);
			f[u][1]=min(f[u][1],min(f[v][2],f[v][1]+c[v])-min(f[v][1],f[v][2]));
			f[u][2]=min(f[u][2],min(f[v][2],f[v][1]+c[v])-min(f[v][0],min(f[v][1],f[v][2])));
		}
		f[u][0]=min(x,y);
		f[u][1]+=y;
		f[u][2]+=x;
	}
}
int main(){
    freopen("Influencers.in" ,"r",stdin );
    freopen("Influencers.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v;
		cin>>u>>v;
		G[u].push_back(v);
		G[v].push_back(u);
	}
	cin>>(s+1);
	for(int i=1;i<=n;i++)cin>>c[i];
	dfs(1,0);
	cout<<min(f[1][1],f[1][2])<<"\n";
	return 0;
}