MZOJ 1063 士兵守卫
Posted quietus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MZOJ 1063 士兵守卫相关的知识,希望对你有一定的参考价值。
MZOJ 1063 士兵守卫
#include<bits/stdc++.h> #define maxn 100000 using namespace std; int k=0,head[maxn]; int f[maxn][2]; int ans=0; struct node{ int v,nxt; }e[maxn<<1]; void adde(int u,int v){ e[k].v=v; e[k].nxt=head[u]; head[u]=k++; } void dp(int u,int fa){ f[u][0]=0;f[u][1]=1; for(int i=head[u];~i;i=e[i].nxt){ int v=e[i].v; if (v==fa) continue; dp(v,u); f[u][0]+=f[v][1]; f[u][1]+=min(f[v][0],f[v][1]); } } void init(){ freopen("soldier.in.txt","r",stdin); //freopen("solider.txt","w",stdout); } void readdata(){ int n,x,y,m; while(scanf("%d",&n)!=EOF){ memset(head,-1,sizeof(head)); for(int i=1;i<=n;i++){ scanf("%d:(%d)",&x,&m); for(int j=1;j<=m;j++){ scanf("%d",&y); adde(x,y); adde(y,x); } } dp(0,-1); printf("%d ",min(f[0][1],f[0][0])); } } int main(){ //init(); readdata(); return 0; }
以上是关于MZOJ 1063 士兵守卫的主要内容,如果未能解决你的问题,请参考以下文章
2021-12-17:长城守卫军问题。 长城上有连成一排的n个烽火台,每个烽火台都有士兵驻守。 第i个烽火台驻守着ai个士兵,相邻峰火台的距离为1。另外,有m位将军, 每位将军可以驻守一个峰火台,每个