UVA 1220 Party at Hali-Bula (树形DP)
求一棵数的最大独立集结点个数并判断方案是否唯一。
dp[i][j]表示以i为根的子树的最大独立集,j的取值为选和不选。
决策:
当选择i时,就不能选择它的子结点。
当不选i时,它的子结点可选可不选。
判断唯一性:当选择的某个子节点方案不唯一,父节点的方案就不唯一,或者某个子节点选或不选方案数一样。
转移顺序:按照拓扑序转移或dfs都可以。
#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
const int pick = ;
const int drop = ; int d[maxn][];
bool f[maxn][];// NotUnique?
int fa[maxn];
int deg[maxn];
int n; void topo()
{
queue<int> q;
for(int i = ; i < n; i++){
d[i][pick] = ;
d[i][drop] = ;
f[i][pick] = f[i][drop] = ;
if(deg[i] == ){
q.push(i);
}
} while(q.size()){
int u = q.front(); q.pop();
int p = fa[u];
int &a = d[u][drop], &b = d[u][pick];
d[p][pick] += a;
f[p][pick] |= f[u][drop];
if(a>b){
d[p][drop] += a;
f[p][drop] |= f[u][drop];
}else {
d[p][drop] += b;
f[p][drop] |= a == b || f[u][pick];
}
deg[p]--;
if(deg[p] == ) {
q.push(p);
}
}
} #define MP make_pair
#define PB push_back
#define fi first
#define se second
map<string,int> idx;
int idx_cnt;
int ID(string &x)
{
map<string,int>::iterator it = idx.find(x);
if(it != idx.end()) return it->se;
idx.insert(MP(x,idx_cnt));
return idx_cnt++;
} string name;
const int root = ;
bool read()
{
scanf("%d",&n);
if(n == ) return false;
idx.clear();
cin>>name;
idx.insert(MP(name,root)); idx_cnt = ;
fill(deg,deg+n,);
for(int i = ; i < n; i++){
cin>>name;
int v = ID(name);
cin>>name;
int p = ID(name);
fa[v] = p;
deg[p]++;
}
return true;
} int main()
{
//freopen("in.txt","r",stdin);
fa[root] = -;
while(read()){
topo();
int k = d[root][pick]>d[root][drop]?pick:drop;
bool flag = d[root][k] != d[root][k^] && !f[root][k];
printf("%d ",d[root][k]);
if(flag) puts("Yes");
else puts("No");
}
return ;
}
UVA 1220 Party at Hali-Bula (树形DP)的更多相关文章
- UVa 1220 - Party at Hali-Bula(树形DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 1220 Party at Hali-Bula (树形DP,最大独立集)
题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案. 析:这个题几乎就是树的最大的独立集 ...
- UVA - 1220 Party at Hali-Bula (树形DP)
有 n 个员工,n-1个从属关系. 不能同时选择某个员工和他的直接上司,问最多可以选多少人,以及选法是否唯一. 树上的最大独立集问题.只不过多了一个判断唯一性. dp[u][0]表示不选这个点的状态, ...
- 【UVA 1380】 A Scheduling Problem (树形DP)
A Scheduling Problem Description There is a set of jobs, say x1, x2,..., xn <tex2html_verbatim_ ...
- UVA Live Archive 4015 Cave (树形dp,分组背包)
和Heroes Of Might And Magic 相似,题目的询问是dp的一个副产物. 距离是不好表示成状态的,但是可以换一个角度想,如果知道了从一个点向子树走k个结点的最短距离, 那么就可以回答 ...
- UVa 10859 - Placing Lampposts 树形DP 难度: 2
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- UVA - 1218 Perfect Service(树形dp)
题目链接:id=36043">UVA - 1218 Perfect Service 题意 有n台电脑.互相以无根树的方式连接,现要将当中一部分电脑作为server,且要求每台电脑必须连 ...
- 树形DP UVA 1292 Strategic game
题目传送门 /* 题解:选择一个点,它相邻的点都当做被选择,问最少选择多少点将所有点都被选择 树形DP:dp[i][0/1]表示当前点选或不选,如果选,相邻的点可选可不选,取最小值 */ /***** ...
- uva 1292 树形dp
UVA 1292 - Strategic game 守卫城市,城市由n个点和n-1条边组成的树,要求在点上安排士兵,守卫与点相连的边.问最少要安排多少士兵. 典型的树形dp.每一个点有两个状态: dp ...
- UVA 1484 - Alice and Bob's Trip(树形DP)
题目链接:1484 - Alice and Bob's Trip 题意:BOB和ALICE这对狗男女在一颗树上走,BOB先走,BOB要尽量使得总路径权和大,ALICE要小,可是有个条件,就是路径权值总 ...
随机推荐
- Python及Pycharm安装详细教程
参考:http://blog.csdn.net/qq_29883591/article/details/52664478 首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址 ...
- HDU - 2612 Find a way 双起点bfs(路径可重叠:两个队列分别跑)
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 服务迁移之路 | Spring Cloud向Service Mesh转变
一.导读 Spring Cloud基于Spring Boot开发,提供一套完整的微服务解决方案,具体包括服务注册与发现,配置中心,全链路监控,API网关,熔断器,远程调用框架,工具客户端等选项中立的开 ...
- spring基于注解的IOC
曾经的XML配置: <bean id="accountService" class="com.itheima.service.impl.AccountService ...
- CodeForces 41A+43A【课上无聊刷水题系列】
41Acode 好像只要前一个字符串存在下一个字符串的头单词就YES: #include <bits/stdc++.h> using namespace std; typedef __in ...
- 如何快速将vc++的类转换为c#/cli
所有需要的工具: 1. TextTemplate 2. P/Invoke Interop Assistant 3. DotNetResolver vc++的native类一般是无法直接暴露在.net环 ...
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一)
本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...
- 图片美化增强AI接口调用手册
在调合合AI平台提供的图片美化增强API接口,API平台链接:https://ai.ccint.com/doc/api/crop_enhance_image, 因为有遇到一些问题,写篇博客记录一下 A ...
- elasticsearch bigdesk 安装和使用
http://blog.csdn.net/laigood/article/details/8207990
- mysql8必知必会7 连接 内连接 外连接 交叉连接
/* 2 需求:建立产品和分类表 1.查询每种分类的产品数量,没有产品的分类也要统计.(cname,quantity) 2.根据分类名称查询分类中的所有产品 */ -- --------------- ...