P5024 保卫王国
Posted sfwr-you
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P5024 保卫王国相关的知识,希望对你有一定的参考价值。
——————————————————————————————————————————————-
考前练习打打部分分
设置权值这个方法需要记住
————————————————————————————————————————————————————
PT:44
————
#include<bits/stdc++.h> using namespace std; const int inf=1000000000; char ch[5]; int n,m,head[101000],ne,a,b,c,d,val[101000],flg[101000],mp[2100][2100]; int f[101000][3]; struct nodeint to,nxt;eg[101000]; void adde(int u,int v) eg[++ne].to=v; eg[ne].nxt=head[u]; head[u]=ne; void dfs(int u,int fa) for(int i=head[u];i;i=eg[i].nxt) if(eg[i].to!=fa) dfs(eg[i].to,u); int v=eg[i].to; f[u][1]+=min(f[eg[i].to][1],f[eg[i].to][0]); f[u][0]+=f[eg[i].to][1]; f[u][1]+=val[u]; int main() //freopen("defense.in","r",stdin); //freopen("defense.out","w",stdout); cin>>n>>m>>ch; for(int i=1;i<=n;i++)cin>>val[i]; for(int i=1;i<n;i++)cin>>a>>b;adde(a,b);adde(b,a); while(m--) memset(f,0,sizeof(f)); cin>>a>>b>>c>>d; int ans=0; int p1=val[a],p2=val[c]; if(!b)val[a]=inf; else ans+=p1;val[a]=0; if(!d)val[c]=inf; else ans+=p2;val[c]=0; dfs(1,0); if(min(f[1][1],f[1][0])>=inf)cout<<-1<<endl; else cout<<ans+min(f[1][1],f[1][0])<<endl; val[a]=p1; val[c]=p2;
以上是关于P5024 保卫王国的主要内容,如果未能解决你的问题,请参考以下文章