https://cn.vjudge.net/problem/UVA-1220

求最大独立集就是裸题 主要是判唯一

dp[i][0]代表不选i的最大独立集 dp[i][1]代表选i

book[i][0]代表不选i是否唯一  book[i][1]代表选i

book[i][0]是不唯一解的贡献者 当i的子节点j出现dp[j][0]==dp[j][1]时 选谁都可以 这时不选i会产生不唯一解

book[i][1]只负责向上传递 当i的子节点j出现book[j][0]==1时 选i会产生不唯一解

最后只判下根节点即可

#include <bits/stdc++.h>
using namespace std;
const int maxn=2e2+10;struct node
{int v,next;
};map <string,int> mp;
node edge[maxn];
int dp[maxn][2],book[maxn][2];
int first[maxn];
int n,num,cnt,flag;void addedge(int u,int v)
{edge[num].v=v;edge[num].next=first[u];first[u]=num++;
}void dfs(int cur)
{int i,v;dp[cur][0]=0,dp[cur][1]=1;book[cur][0]=0,book[cur][1]=0;for(i=first[cur];i!=-1;i=edge[i].next){v=edge[i].v;dfs(v);dp[cur][0]+=max(dp[v][0],dp[v][1]);if(dp[v][0]==dp[v][1]) book[cur][0]=1;dp[cur][1]+=dp[v][0];book[cur][1]|=book[v][0];}
}int main()
{string uu,vv;int i,u,v;while(scanf("%d",&n)!=EOF){if(n==0) break;mp.clear();memset(first,-1,sizeof(first));num=0,cnt=0;cin>>uu;if(mp[uu]==0) mp[uu]=++cnt;for(i=1;i<=n-1;i++){cin>>uu>>vv;if(mp[uu]==0) mp[uu]=++cnt;u=mp[uu];if(mp[vv]==0) mp[vv]=++cnt;v=mp[vv];addedge(v,u);}dfs(1);/*for(i=1;i<=n;i++){printf("*%d %d*\n",book[i][0],book[i][1]);}*/printf("%d ",max(dp[1][0],dp[1][1]));if(dp[1][0]==dp[1][1]) printf("No\n");else{if((dp[1][0]>dp[1][1]&&book[1][0])||(dp[1][0]<dp[1][1]&&book[1][1])) printf("No\n");else printf("Yes\n");}}return 0;
}/*
6
Jason
Jack Jason
Joe Jack
Jill Jason
John Jack
Jim Jill
*/

Party at Hali-Bula UVA - 1220相关推荐

  1. Uva 1220,Hali-Bula 的晚会

    题目链接:https://uva.onlinejudge.org/external/12/1220.pdf 题意: 公司n个人,形成一个数状结构,选出最大独立集,并且看是否是唯一解. 分析: d(i) ...

  2. Party at Hali-Bula UVA - 1220(树形dp)

    题目链接:传送门 思路:求最多参与人数是树形dp的入门题,和没有上司的舞会是一个题目,但是这个题目还要求答案是否唯一.我们开设一个标记数组vis,标记就可以了.具体解释看代码: #include< ...

  3. uva 1220——Party at Hali-Bula

    题意:公司里n个人,要举办一场party,但是到场的人不能碰到他的直隶上司,问最多能到场多少人. 思路:树形dp,就是求在树上的最大独立集合,加唯一性特判.dp(u,0)表示不选u点的条件最大人数,k ...

  4. UVA 1220 Hali-Bula的晚会

    题目描述:https://vjudge.net/problem/UVA-1220 判断一个图是否是树:一个图G如果是无回路的连通图,或者是n-1条边的连通图,那么G就是树.树上的DP类问题一般用深度优 ...

  5. UVA 1220 Party at Hali-Bula (树状DP+记忆化搜索)

    Dear Contestant, I'm going to have a party at my villa at Hali-Bula to celebrate my retirement from ...

  6. 【Uva 1220】Party at Hali-Bula

    [Link]:https://cn.vjudge.net/contest/170078#problem/M [Description] 求一个树的最大独立子集; (即树的一个点集,这个点集中任意两个点 ...

  7. 紫书动规 例题9-13 UVA - 1220 Party at Hali-Bula 树形dp

    题目链接: https://vjudge.net/problem/UVA-1220 题意: 题解: 树形dp: 树的最大独立集问题 d[u][0]:=不选u能得到的最大人数 d[u][0]=sum{m ...

  8. 【学时总结】◆学时·VIII◆ 树形DP

    ◆学时·VIII◆ 树形DP DP像猴子一样爬上了树--QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...

  9. Party at Hali-Bula(树形DP+判断方案数是否唯一)

    Party at Hali-Bula UVA - 1220 题意:  公司里有n(n<=200)个人形成一个树状结构, 要求尽量选多的人,但不能同时选择一个人和他的直属上司,文最多能选多少人,以 ...

最新文章

  1. 2022-2028年中国麻纺织业投资分析及前景预测报告
  2. iOS 关于手机权限的检查与获取
  3. 白盒测试之基本路径覆盖测试
  4. java试用(1)hello world
  5. 离散化小记,Acwing802. 区间和
  6. SAP BI工具的优缺点
  7. php function split is deprecated,如何解决php Function split() is deprecated 的问题
  8. 欢乐纪中某B组赛【2019.1.20】
  9. 页面滚动效果库,有点儿皮!
  10. vs2015社区版不支持installshield
  11. mysql没有实体框架_NET实体框架数据库更新未在MySQL数据库中创...
  12. linux下jtag命令,[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD)
  13. jdk8,lambda表达(简化代码)
  14. 夜曲歌词 拼音_周杰伦夜曲歌词
  15. 介绍身份证号姓名实名认证 身份证号姓名校验 身份证号验人API
  16. PandoraBox潘多拉多线多播
  17. 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、
  18. 在线登录注册功能(android客户端+javaweb服务端+腾讯云服务器+腾讯云数据库)
  19. 成为一名程序员的开始
  20. 齐鲁师范学院计算机应用技术怎么样,齐鲁师范学院专业排名及介绍 哪些专业最好...

热门文章

  1. android 闹钟设置
  2. 入门、复习微服务的同学看过来,一篇文章让你彻底搞懂微服务
  3. linux系统mkfs工具介绍
  4. Men's Clothes, Now In Technicolor...
  5. React06---redux学习
  6. 梦幻手游服务器维护摆摊公示时间,梦幻西游手游3月30日维护公告
  7. excel文件设置了打开密码,怎么找回
  8. BMP文件调色(C语言)
  9. Windows Batch bat批处理脚本 停止和启动IIS服务,可用于自动重启方案
  10. SSID设置问题面面观