Party at Hali-Bula UVA - 1220
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相关推荐
- Uva 1220,Hali-Bula 的晚会
题目链接:https://uva.onlinejudge.org/external/12/1220.pdf 题意: 公司n个人,形成一个数状结构,选出最大独立集,并且看是否是唯一解. 分析: d(i) ...
- Party at Hali-Bula UVA - 1220(树形dp)
题目链接:传送门 思路:求最多参与人数是树形dp的入门题,和没有上司的舞会是一个题目,但是这个题目还要求答案是否唯一.我们开设一个标记数组vis,标记就可以了.具体解释看代码: #include< ...
- uva 1220——Party at Hali-Bula
题意:公司里n个人,要举办一场party,但是到场的人不能碰到他的直隶上司,问最多能到场多少人. 思路:树形dp,就是求在树上的最大独立集合,加唯一性特判.dp(u,0)表示不选u点的条件最大人数,k ...
- UVA 1220 Hali-Bula的晚会
题目描述:https://vjudge.net/problem/UVA-1220 判断一个图是否是树:一个图G如果是无回路的连通图,或者是n-1条边的连通图,那么G就是树.树上的DP类问题一般用深度优 ...
- 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 ...
- 【Uva 1220】Party at Hali-Bula
[Link]:https://cn.vjudge.net/contest/170078#problem/M [Description] 求一个树的最大独立子集; (即树的一个点集,这个点集中任意两个点 ...
- 紫书动规 例题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 ...
- 【学时总结】◆学时·VIII◆ 树形DP
◆学时·VIII◆ 树形DP DP像猴子一样爬上了树--QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...
- Party at Hali-Bula(树形DP+判断方案数是否唯一)
Party at Hali-Bula UVA - 1220 题意: 公司里有n(n<=200)个人形成一个树状结构, 要求尽量选多的人,但不能同时选择一个人和他的直属上司,文最多能选多少人,以 ...
最新文章
- 2022-2028年中国麻纺织业投资分析及前景预测报告
- iOS 关于手机权限的检查与获取
- 白盒测试之基本路径覆盖测试
- java试用(1)hello world
- 离散化小记,Acwing802. 区间和
- SAP BI工具的优缺点
- php function split is deprecated,如何解决php Function split() is deprecated 的问题
- 欢乐纪中某B组赛【2019.1.20】
- 页面滚动效果库,有点儿皮!
- vs2015社区版不支持installshield
- mysql没有实体框架_NET实体框架数据库更新未在MySQL数据库中创...
- linux下jtag命令,[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD)
- jdk8,lambda表达(简化代码)
- 夜曲歌词 拼音_周杰伦夜曲歌词
- 介绍身份证号姓名实名认证 身份证号姓名校验 身份证号验人API
- PandoraBox潘多拉多线多播
- 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、
- 在线登录注册功能(android客户端+javaweb服务端+腾讯云服务器+腾讯云数据库)
- 成为一名程序员的开始
- 齐鲁师范学院计算机应用技术怎么样,齐鲁师范学院专业排名及介绍 哪些专业最好...