本来写的60分的代码,结果得了75分
就是dfs深搜,SPFA都忘了,也没看出来
深搜看看是买这个物品还是换这个物品,比较一下价格
很简单不说了
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,p;
struct H{
int v,a,b;
}thing[100007];
int tot;
int dfs(int x)
{
if(thing[x].a==0)
return thing[x].v;
int tmp=dfs(thing[x].a)+dfs(thing[x].b);
return min(thing[x].v,tmp);
}
int main()
{
freopen("dwarf.in","r",stdin);
freopen("dwarf.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>thing[i].v;
for(int i=1;i<=m;i++)
cin>>p>>thing[p].a>>thing[p].b;
cout<<dfs(1)<<endl;
return 0;
}