比赛 |
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;
}