UVA - 1220 Party at Hali-Bula (树形DP)
2024-09-01 04:26:14
有 n 个员工,n-1个从属关系。
不能同时选择某个员工和他的直接上司,问最多可以选多少人,以及选法是否唯一。
树上的最大独立集问题。只不过多了一个判断唯一性。
dp[u][0]表示不选这个点的状态,dp[u][1]表示选这个点的状态。
如果不选 u, 那么 u点状态是由 dp[v][0] 或者 dp[v][1],大的那个点转移过来,唯一性同时也转移。
如果选 u , 那么 u点状态是由所有的 dp[v][0] 转移过来,所以只有所有的 dp[v][0]状态的都唯一时,dp[u][1]才唯一。
另外,我一直 WA 的原因在于给员工编号的时候没有判断有没有出现过,默认每行的第一个都是没有出现过的。瞎改了好久。
吸取教训。
#include <bits/stdc++.h>
using namespace std;
#define maxn 100010 vector<int> son[maxn], fa[maxn];
int same[maxn], dp[maxn][], f[maxn][]; void DP(int k)
{
dp[k][] = , dp[k][] = ; f[k][] = , f[k][] = ;
for (int i = ; i < son[k].size(); i++)
{
int v = son[k][i];
DP(v); dp[k][] += max(dp[v][], dp[v][]); if (dp[v][] == dp[v][]) f[k][] = ;
if (dp[v][] > dp[v][] && f[v][] == ) f[k][] = ;
if (dp[v][] < dp[v][] && f[v][] == ) f[k][] = ; dp[k][] += dp[v][];
if (f[v][] == ) f[k][] = ;
}
} void init(int n)
{
for (int i = ; i < n; i++)
son[i].clear();
memset(f, , sizeof());
} int main()
{
int n;
while(~scanf("%d", &n) && n)
{
init(n);
map<string, int> idx;
string s;
cin >> s;
idx[s] = ;
int id = ; for (int i = ; i <= n-; i++)
{
string x, y;
cin >> x >> y;
if (!idx.count(x))
idx[x] = ++id;
if (!idx.count(y))
idx[y] = ++id;
son[idx[y]].push_back(idx[x]);
} DP(); int uniq = ;
if (dp[][] > dp[][] && f[][] == ) uniq = ;
else if (dp[][] < dp[][] && f[][] == ) uniq = ;
else if (dp[][] == dp[][]) uniq = ; printf("%d %s\n", max(dp[][], dp[][]), uniq ? "Yes":"No");
}
}
最新文章
- js日期校验
- ng-switch 指令
- 浅析Java异常
- iOS传值方式:属性,代理,block,单例,通知
- 11.2 afternoon
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
- java Object 类
- gvim生存配置
- Android 增加(键盘)按键
- Jupyter Notebook的快捷键
- [Swift]LeetCode203. 移除链表元素 | Remove Linked List Elements
- CF1101F Trucks and Cities
- Effective C++ 条款46
- SpringBoot中配置起动时的数据库初始化角本
- sql update操作结果
- 【JavaScript】js 中一些需要注意的问题
- idea输入法候选区不跟随光标
- 读取GY-951模块数据(Linux)
- Android SharedPreferences保存第一次的信息
- 《Linux内核设计与实现》第5章读书笔记
热门文章
- (转)Centos 7.3 用户和组管理
- RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置
- scp 可以在 2个 linux 主机间复制文件
- Linux学习笔记——如何使用echo指令向文件写入内容
- T-SQL查询处理执行顺序(一)
- 一起来学Spring Cloud | 第四章:服务消费者 ( Feign )
- 前端HTML以及HTML5(基本标签)
- document.all.item作用
- mininet安装,使用
- CF Gym 100637F 	The Pool for Lucky Ones