Perfect Service UVA - 1218
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<deque>
#include<iomanip>
#include<vector>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<functional>
#include<fstream>
#include<memory>
#include<list>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL; #define N 31
#define MAXN 20000 + 9
#define INF 1000000009
#define eps 0.00000001
#define sf(a) scanf("%d",&a) /*
N台电脑构成树!
选点做服务器,最小支配集!
注意这里每个电脑只能从一台服务器上获得信息,说明不能有一个点和两个支配集的点相连!
所以dp[u][1]的状态就是不可行的!
*/
struct edge
{
int to, next;
}E[MAXN*];
int head[MAXN];
int cnt, n, dp[MAXN][];
void init()
{
cnt = ;
memset(dp, , sizeof(dp));
memset(head, -, sizeof(head));
}
void addedge(int u, int v)
{
E[cnt].to = v;
E[cnt].next = head[u];
head[u] = cnt++;
}
void Dp(int u, int p)
{
dp[u][] = ;
dp[u][] = ;
bool f = false;
int sum = , inc = INF;
for (int i = head[u]; i != -; i = E[i].next)
{
int v = E[i].to;
if (v == p)
continue;
Dp(v, u);
dp[u][] += min(dp[v][], dp[v][]);
if (dp[v][] < dp[v][])
{
f = true;
sum += dp[v][];
}
else
{
inc = min(inc, dp[v][] - dp[v][]);
sum += dp[v][];
}
if (dp[v][] != INF&&dp[u][] != INF)
dp[u][] += dp[v][];
else
dp[u][] = INF;
}
if (inc == INF && !f)
dp[u][] = INF;
else
{
dp[u][] = sum;
if (!f) dp[u][] += inc;
}
}
int main()
{
while (scanf("%d", &n) != EOF)
{
int f, t;
init();
for (int i = ; i < n - ; i++)
{
scanf("%d%d", &f, &t);
addedge(f, t);
addedge(t, f);
}
Dp(, -);
printf("%d\n", min(dp[][], dp[][]));
int flag;
scanf("%d", &flag);
if (flag == -)
break;
}
}
Perfect Service UVA - 1218的更多相关文章
- UVA - 1218 Perfect Service(树形dp)
题目链接:id=36043">UVA - 1218 Perfect Service 题意 有n台电脑.互相以无根树的方式连接,现要将当中一部分电脑作为server,且要求每台电脑必须连 ...
- UVa 1218 - Perfect Service
/*---UVa 1218 - Perfect Service ---首先对状态进行划分: ---dp[u][0]:u是服务器,则u的子节点可以是也可以不是服务器 ---dp[u][1]:u不是服务器 ...
- POJ 3398 Perfect Service(树型动态规划,最小支配集)
POJ 3398 Perfect Service(树型动态规划,最小支配集) Description A network is composed of N computers connected by ...
- Perfect Service [POJ 3398]
Perfect Service 描述 网络由N个通过N-1个通信链路连接的计算机组成,使得任何两台计算机可以通过独特的路由进行通信.如果两台计算机之间存在通信链路,则称这两台计算机是相邻的.计算机的邻 ...
- Perfect service(树形dp)
Perfect service(树形dp) 有n台机器形成树状结构,要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最小数量.n<=10000. ...
- UVa 1218 - Perfect Service(树形DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA - 1218 Perfect Service (树形DP)
思路:dp[i][0]表示i是服务器:dp[i][1]表示i不是服务器,但它的父节点是服务器:dp[i][2]表示i和他的父亲都不是服务器. 转移方程: d[u][0] += min(d[ ...
- UVA - 1218 Perfect Service (树形dp)(inf相加溢出)
题目链接 题意:给你一个树形图,让你把其中若干个结点染成黑色,其余的染成白色,使得任意一个白色结点都恰好与一个黑色结点相邻. 解法比较容易,和树上的最大独立集类似,取一个结点作为树根,对每个结点分三种 ...
- UVa 1218 Perfect Service 完美的服务
***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u ...
随机推荐
- [转]查询表达式 (F#)
本文转自:http://msdn.microsoft.com/zh-cn/library/hh225374.aspx 查询表达式可以查询数据源并将数据是一种预期形式. 查询表达 ...
- 使用 ServerSocket 进行文件上传,以及用Tomcat启动ServerSocket时,会卡死解决
服务器端代码 import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOExcept ...
- openID 无效
1.appid 和秘钥一定要是你目前正在测试公众号的数据,如果 appid 和 秘钥是测试账号的,而目标测试业务是在正式的公众号,及时能取到acces——token ,也会报无效的openid 遇到的 ...
- iOS Programming View Controllers 视图控制器
iOS Programming View Controllers 视图控制器 1.1 A view controller is an instance of a subclass of UIVi ...
- R in action读书笔记(9)-第八章:回归 -回归诊断
8.3回归诊断 > fit<-lm(weight~height,data=women) > par(mfrow=c(2,2)) > plot(fit) 为理解这些图形,我们来回 ...
- iOS-控件响应用户控制事件之事件处理
事件处理 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewControlle ...
- 解决重置PostgreSQL 9.6密码的问题
一.PostgreSql9.6重置密码的方法: 1.打开windows服务管理器,找到“postgresql-x64-9.6”服务,停止服务. 2.找到PostgreSQL9.6的安装目录(以我的E盘 ...
- spring3 上配置quartz 任务调度
maven配置: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qu ...
- ubuntu15.04安装 RVM
首先,请参考这篇文章 https://ruby-china.org/wiki/rvm-guide RVM 官方网站 https://rvm.io/ 1 由于现在很多网站都转向https链接,所以,根据 ...
- (转)Spring中的事务操作
http://blog.csdn.net/yerenyuan_pku/article/details/70024364 事务的回顾 什么是事务 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么 ...