您的位置:首页 > Web前端

UVA 1218 Perfect Service - ACM/ICPC Kaoshiung 2006

2018-03-29 10:25 288 查看
#include<bits/stdc++.h>
using namespace std;
int d[10010][3];
vector<int>s[10010];
void dp(int u,int pre){
if(s[u].size()==1&&pre!=0){
d[u][0]=1;
d[u][1]=0;
d[u][2]=1e5;
return;
}
d[u][0]=1;
d[u][1]=0;
d[u][2]=1e5;
for(int i=0;i<s[u].size();i++){
int v=s[u][i];
if(v!=pre){
dp(v,u);
d[u][0]+=min(d[v][0],d[v][1]);
d[u][1]+=d[v][2];
}
}
for(int i=0;i<s[u].size();i++){
int v=s[u][i];
if(v!=pre)
d[u][2]=min(d[u][2],d[u][1]-d[v][2]+d[v][0]);
}
}
int main(){
int n,i,x,y,t;
while(scanf("%d",&n)){
for(i=1;i<=n;i++)
s[i].clear();
for(i=1;i<n;i++){
scanf("%d%d",&x,&y);
s[y].push_back(x);
s[x].push_back(y);
}
dp(1,0);
printf("%d\n",min(d[1][0],d[1][2]));
scanf("%d",&t);
if(t==-1)return 0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: