比赛 |
20241127 |
评测结果 |
AAWWWWWWAW |
题目名称 |
魔法药水 |
最终得分 |
30 |
用户昵称 |
孤独的氢离子 |
运行时间 |
0.165 s |
代码语言 |
C++ |
内存使用 |
4.85 MiB |
提交时间 |
2024-11-27 10:27:23 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int d[1010];
struct child{
int lc;
int rc;
};
struct tree{
int di;//存最低价格
int sum;//存最低价格数
int tai;//0表示还未遍历,1表示已经遍历过
child ch[10010];//ch[0].lc存分支数
}t[1010];
int bian(int r)
{
for(int i=1;i<=t[r].ch[0].lc;i++)
{
if(t[t[r].ch[i].lc].tai==0)
{
t[t[r].ch[i].lc].tai=1;
bian(t[r].ch[i].lc);
}
if(t[t[r].ch[i].rc].tai==0)
{
t[t[r].ch[i].rc].tai=1;
bian(t[r].ch[i].rc);
}
if(t[r].di==t[t[r].ch[i].lc].di+t[t[r].ch[i].rc].di)
{
t[r].sum=t[r].sum+t[t[r].ch[i].lc].sum*t[t[r].ch[i].rc].sum;
}
else if(t[r].di>t[t[r].ch[i].lc].di+t[t[r].ch[i].rc].di)
{
t[r].di=t[t[r].ch[i].lc].di+t[t[r].ch[i].rc].di;
t[r].sum=t[t[r].ch[i].lc].sum*t[t[r].ch[i].rc].sum;
}
}
return 0;
}
int main()
{
freopen("msyrup.in","r",stdin);
freopen("msyrup.out","w",stdout);
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t[i].di;
t[i].sum=1;
}
int na,nb,nc;
while(cin>>na>>nb>>nc)
// for(int i=1;i<=3;i++)
{
// cin>>na>>nb>>nc;
t[nc].ch[0].lc++;
t[nc].ch[t[nc].ch[0].lc].lc=na;
t[nc].ch[t[nc].ch[0].lc].rc=nb;
}
bian(0);
// for(int i=0;i<n;i++) cout<<t[i].di<<" "<<t[i].sum<<endl;
cout<<t[0].di<<" "<<t[0].sum;
return 0;
}