hdu-2412-Party at Hali-Bula

来源:互联网 发布:商家怎么加入淘宝联盟 编辑:程序博客网 时间:2024/05/21 11:26
#include<cstdio>#include<iostream>#include<string.h>#include<algorithm>#include<stdlib.h>#include<math.h>#include<vector>#include<iomanip>using namespace std;int dp[220][2],dup[220][2];char name[220][110],st1[110],st2[110];vector<int> f[220];int k;int search(char p[]){int i;for(i=1;i<=k;i++)if(strcmp(p,name[i])==0)return i;k++;strcpy(name[k],p);return k;}void dfs(int v){if(f[v].size()==0){dp[v][0]=0;dp[v][1]=1;dup[v][0]=dup[v][1]=-1;}else{int i;for(i=0;i<f[v].size();i++){int u=f[v][i];dfs(u);dp[v][1]+=dp[u][0];dp[v][0]+=max(dp[u][0],dp[u][1]);if((dp[u][0]>dp[u][1]&&dup[u][0]==0)||(dp[u][0]<dp[u][1]&&dup[u][1]==0)||(dp[u][0]==dp[u][1]))dup[v][0]=0;if(dup[u][0]==0)dup[v][1]=0;}dp[v][1]++;}}int main(){    int i,j;    int n;while(1){cin>>n;if(n==0) break;for(i=0;i<=n;i++)f[i].clear();k=1;int t1,t2;cin>>name[1];for(i=1;i<n;i++){cin>>st1>>st2;t1=search(st1);t2=search(st2);f[t2].push_back(t1);}memset(dup,-1,sizeof(dup));memset(dp,0,sizeof(dp));dfs(1);if(dp[1][0]>dp[1][1]&&dup[1][0]==-1)printf("%d Yes\n",dp[1][0]);else if(dp[1][0]<dp[1][1]&&dup[1][1]==-1)printf("%d Yes\n",dp[1][1]);elseprintf("%d No\n",max(dp[1][1],dp[1][0]));}        //system("pause");}

0 0
原创粉丝点击