比赛 20241127 评测结果 WAAAAAWAAA
题目名称 魔法药水 最终得分 80
用户昵称 黄天宇 运行时间 0.157 s
代码语言 C++ 内存使用 4.96 MiB
提交时间 2024-11-27 11:57:44
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
long long mapp[MAXN][MAXN];
int n;
long long v[MAXN];
long long dis[MAXN];
long long num[MAXN];
bool vis[MAXN];
int com[MAXN][MAXN][4];
long long minx=1e18;
int cnt;
bool bo;
long long sum[MAXN];
struct edge{
	int d;
	int num;
	int com[MAXN][4];
	int text;
}e[MAXN];
int fa[MAXN];
//int find(int x){
//	if(fa[x]==x) return x;
//	else{
//		int root=find(fa[x]);
//		e[x].d+=e[fa[x]].d;
//		return fa[x]=find(root);
//	}
//}
///bool cmp(edge a,edge b){
//	return a.num>b.num;
//}
int main(){
	freopen("msyrup.in","r",stdin);
	freopen("msyrup.out","w",stdout);
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>v[i];
		fa[i]=i;
		e[i].text=i;
	}
	int x,y,z;
	while(cin>>x>>y>>z){
		e[z].num++;
		e[z].com[e[z].num][1]=x;
		e[z].com[e[z].num][2]=y;
		//fa[x]=z;
		//e[x].d++;
		//fa[y]=z;
		//e[y].d++;
	}
	//for(int i=0;i<n;i++){
	//	int x=find(i);
	//}
	//sort(e,e+n,cmp);
	for(int i=0;i<n;i++){
		sum[i]=1;
		dis[i]=v[i];
	}
	for(int i=n-1;i>=0;i--){
		//int i=e[k].text;
		for(int j=1;j<=e[i].num;j++){
			if(dis[e[i].com[j][1]]+dis[e[i].com[j][2]]==dis[i]){
				sum[i]+=sum[e[i].com[j][1]]*sum[e[i].com[j][2]];
			}else
			if(dis[e[i].com[j][1]]+dis[e[i].com[j][2]]<dis[i]){
				dis[i]=dis[e[i].com[j][1]]+dis[e[i].com[j][2]];
				sum[i]=sum[e[i].com[j][1]]*sum[e[i].com[j][2]];
			}
		}
	}
	cout<<dis[0]<<" ";
	cout<<sum[0]<<endl;
	return 0;
}