uva1220--树的最大独立集+判重
题意是挑选尽量多的人,并且每个人都不和他的父节点同时出现,很明显的最大独立集问题,难点在于如何判断方案是否唯一。
详情请见刘汝佳《算法竞赛入门经典--第二版》P282
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
#include<queue>
#define INF 1e6
using namespace std;
const int maxn = ; char ch[],fa[];
char trie[maxn][];
int k;
int d[maxn][],f[maxn][];
vector<int> g[maxn]; int ID(char *s)//给每个字符串分配ID;
{
int i = ;
for(i = ; i < k; ++i)
{
if(strcmp(s,trie[i]) == ) {
return i;
}
}
if(i == k) strcpy(trie[k],s);
k++;
return k-;
}
int dp(int u,int x)
{
if(d[u][x]!=-) return d[u][x];//记忆化
if(x == ){
int sum = ;
f[u][] = ;
if(g[u].size() == ) return d[u][] = ;
for(int i = ; i < g[u].size(); ++i)
{
sum+=dp(g[u][i],);
if(f[g[u][i]][] == ) {
f[u][] = ;
}
}
return d[u][] = sum;
}
else
{
int sum = ;
f[u][] = ;
if(g[u].size() == ) return d[u][] = ;
for(int i = ; i < g[u].size(); ++i)
{
int p = dp(g[u][i],),q = dp(g[u][i],);
if(p == q)
{
sum+=p;
f[u][] = ;
}
else if(p > q)
{
sum+=p;
if(f[g[u][i]][] == ) f[u][] = ;
}
else if(p < q)
{
sum+=q;
if(f[g[u][i]][] == ) f[u][] = ;
}
}
return d[u][] = sum;
}
}
int main()
{
//freopen("in","r",stdin);
int n;
while(~scanf("%d",&n)&&n)
{
int from,to;
k = ;
scanf("%s",ch);
ID(ch);//big boss是0号
for(int i = ; i < n; ++i)
{
scanf("%s%s",ch,fa);
from = ID(ch);
to = ID(fa);
g[to].push_back(from);
}
//printf("%d\n",g[0].size());
memset(d,-,sizeof(d));
dp(,);
dp(,);
if(d[][] > d[][])
{
printf("%d ",d[][]);
if(f[][]) puts("Yes");
else puts("No");
}
else if(d[][] < d[][])
{
printf("%d ",d[][]);
if(f[][]) puts("Yes");
else puts("No");
}
else
{
printf("%d ",d[][]);
puts("No");
}
for(int i = ; i < n; ++i) g[i].clear(); }
}
uva1220--树的最大独立集+判重的更多相关文章
- POJ 3342 Party at Hali-Bula (树形dp 树的最大独立集 判多解 好题)
Party at Hali-Bula Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5660 Accepted: 202 ...
- 八数码问题+路径寻找问题+bfs(隐式图的判重操作)
Δ路径寻找问题可以归结为隐式图的遍历,它的任务是找到一条凑够初始状态到终止问题的最优路径, 而不是像回溯法那样找到一个符合某些要求的解. 八数码问题就是路径查找问题背景下的经典训练题目. 程序框架 p ...
- UVa 1220 Hali-Bula的晚会(树的最大独立集)
https://vjudge.net/problem/UVA-1220 题意: 公司里有n个人形成一个树状结构,即除了老板以外每个员工都有唯一的直属上司.要求选尽量多的人,但不能同时选择一个人和他的直 ...
- 程序员的算法课(14)-Hash算法-对海量url判重
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...
- BFS+Hash(储存,判重) HDOJ 1067 Gap
题目传送门 题意:一个图按照变成指定的图,问最少操作步数 分析:状态转移简单,主要是在图的存储以及判重问题,原来队列里装二维数组内存也可以,判重用神奇的hash技术 #include <bits ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
- poj 1465 Multiple(bfs+余数判重)
题意:给出m个数字,要求组合成能够被n整除的最小十进制数. 分析:用到了余数判重,在这里我详细的解释了.其它就没有什么了. #include<cstdio> #include<cma ...
- POJ 3668 Game of Lines (暴力,判重)
题意:给定 n 个点,每个点都可以和另一个点相连,问你共有多少种不同斜率的直线. 析:那就直接暴力好了,反正数也不大,用set判重就好,注意斜率不存在的情况. 代码如下: #include <c ...
- UVa 10400 - Game Show Math 游戏中的数学 dfs+判重
题意:给出一些数字和一个目标数字,要求你在数字间添加+-*/,让表达式能达到目标数字,运算符号的优先级都是一样的. 由于数据量很大,本来想用map<string>判重的,结果还是超时了,然 ...
随机推荐
- Java IO :文件
在java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这里只提供一些必要的知识点. 通过Java IO读文件 如果你需要在不同端之间读 ...
- J2EE基础总结(1)——J2EE入门
J2EE诞生的背景 在传统的开发模式(单层应用结构)下.应用普遍存在下面致命缺点: - 数据.页面和业务逻辑在一个逻辑层次中.功能紧密耦合. - 代码重用性极低,可维护性差. - 应用耦合度高,全然没 ...
- Vagrant入门[转]
Vagrant是一个简单易用的部署工具,用英文说应该是orchestration tool.它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境. Vagrant的基本工作原理大致如下: ...
- 转载:android——eclipse如何去除Ctrl+shift+R组合键查找到的.class文件
转载自:http://blog.csdn.net/virgilli/article/details/22500409 AS里面的build文件下一堆的.class 文件,当你要定位资源文件的时候,有些 ...
- C# XML,XmlDocument简单操作实例
private static string _Store = LocalPathHelper.CurrentSolutionPath + "/data/bookstore.xml" ...
- Easyui 排序时 自动向后排传sort order 你妹真坑爹
request 的时候 发现 sort 竟然是个数组!
- IIS 7 支持10万并发请求
原文链接:http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html 今天下午17点左右,博客园博客站点出现这样的错误信息: Error S ...
- MFC的初始化过程和消息映射技术
1.删除#include <windows.h>--win32中的-(使用win32工程编程mfc必须删除) 添加#include <afxwin.h> -- mfc中的- 2 ...
- mysql索引之普通索引
1,普通索引的创建 普通索引可以在建表的时候创建 sql : create table temp2(id int(10) not null auto_increment ,title varchar( ...
- js+jquery+html实现在三种不通的情况下,点击图片放大的效果
js+jquery+html实现在三种不通的情况下,点击图片放大的效果. 三种情况分别是:图片的父元素宽高固定; 图片的宽高固定; 图片的父元素宽固定,高度不固定 第一种情况:图片的父元素宽高固定 ...