题意:有n个机器组成的树形结构,要求一台服务器必须连接一台电脑,求使用的最少的服务器。。

思路: 树形DP,和前面的有道题目类似。在dfs遍历树的时候找到选当前结点和不选当前节点的最大状态,多一个两个都不是而儿子是节点的情况。

code:

#include <bits/stdc++.h>
using namespace std;#define ft(i,s,t) for (int i=s;i<=t;i++)
#define frt(i,t,s) for (int i=t;i>=s;i--)
#define cls(v,c) memset(v,c,sizeof(v))
const int INF=0x3f3f3f3f;
const int N=1e5+1e4;int dp[N][3],n,x,y;
vector<int>v[N];
int vis[N];void dfs(int u)
{vis[u]=1;dp[u][0]=1;dp[u][1]=0;dp[u][2]=N;int pt=-1,len=v[u].size();for (int i=0;i<len;i++){int t=v[u][i];if (!vis[t]){dfs(t);dp[u][0]+=min(dp[t][0],dp[t][1]);dp[u][1]+=dp[t][2];}else pt=i;}if (pt>=0) len--,v[u][pt]=v[u][len];for (int i=0;i<len;i++){int t=v[u][i];dp[u][2]=min(dp[u][2],dp[u][1]-dp[t][2]+dp[t][0]);}
}
int main()
{while (~scanf("%d",&n)){ft(i,0,n) v[i].clear();cls(vis,0);ft(i,1,n-1){scanf("%d %d",&x,&y);v[x].push_back(y);v[y].push_back(x);}dfs(1);printf("%d\n",min(dp[1][0],dp[1][2]));scanf("%d",&n);if (n==-1) break;}
}

uva 1218——Perfect Service相关推荐

  1. uva 1218 Perfect Service 树形dp

    // uva 1218 Perfect Service 树形dp // // 解题思路: // // d[u][0]表示节点本身是服务器 // d[u][1]表示节点的父节点是服务器 // d[u][ ...

  2. UVA - 1218 Perfect Service(树形dp)

    题目链接:UVA - 1218 Perfect Service 题意 有n台电脑,互相以无根树的方式连接,现要将其中一部分电脑作为服务器,且要求每台电脑必须连接且只能连接一台服务器(不包括作为服务器的 ...

  3. [树形DP | Uva 1218]Perfect Service

    dp[i][0]表示以i为根的且i被选为服务器的最小服务器数 dp[i][1]表示以i为根且i不被选为服务器,而i父亲为服务器的最小服务器数 dp[i][2]表示以i为根且i不被选为服务器,而i父亲也 ...

  4. Perfect service(树形dp)

    Perfect service(树形dp) 有n台机器形成树状结构,要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最小数量.n<=10000. ...

  5. POJ3398 Perfect Service

    题面:http://poj.org/problem?id=3398 本题是求树的最小支配集裸题.Code: #include<iostream> #include<cstdio> ...

  6. uva 10622——Perfect P-th Powers

    题意:给定一个数n,求最大的一个数k使得n=x^k. 思路1:正规的做法是把这个素数分解,然后求指数的最大公约数就是所求(听说有人取了最小值也能过,数据水吧!),素数打表,分解+欧几里得并不麻烦!(注 ...

  7. UVA 188 Perfect Hash

    UVA_188 这个题目的难度主要在理解题意上面,理解了题意之后只要按题意进行模拟并找出C即可. #include<stdio.h>#include<string.h>#inc ...

  8. [UVA-1218] Perfect Service(树的最小支配集)

    题目链接:https://vjudge.net/problem/UVA-1218 题目大意:给你一棵无向树,让你求树的最小支配集,但是有一个要求是除最小支配集外剩下的任何一个结点不能同时连接支配集中的 ...

  9. UVA 1218 完美的服务

    题目大意: 给一棵树,在树上选点安装服务器,要求每个非服务器的点有且仅有一个服务器与之相连,求服务器的最少数量 树上的动态规划,仍然按照每个节点的情况分类: 1.f[u][0]表示u是服务器,那么每个 ...

最新文章

  1. 关于eigrp-FSM有限状态机的资料
  2. OpenGL高斯模糊
  3. 转:[C#]获取某年指定周的开始日期和结束日期的通用方法
  4. 65.4. Other GUI - phpOraAdmin
  5. matlab mcc 安装,matlab中安装mcc
  6. 单线程无阻塞IO模型在Node.js中的工作方式
  7. 【OpenGL】OpenGL4.3常用指令目录
  8. 2014全国计算机二级visual foxpro,全国计算机等级考试二级visual_foxpro试题
  9. 历时三个月,少说有三十多万字的《从零开始学习Java设计模式》小白零基础设计模式入门导读(强烈建议收藏)
  10. uml点餐系统活动图_UML 活动图
  11. 盘点新加坡旅游宣传片中不可错过的景点
  12. 收益率-计算方法介绍
  13. IEEE爬取摘要并翻译成中文
  14. cat 常用的日志分析架构方案_深度剖析|数据库生产常用架构方案
  15. 疑问点sqlilibs 第一关
  16. java 录屏_告别Java,更高效的在线录屏方法
  17. glove.840B.300d、glove.42B.300d、glove.6B下载
  18. 手动压缩Outlook PST和OST文件
  19. HTML和CSS内容总结
  20. 嵌入式-ARM-学习总结(7):按键与中断

热门文章

  1. vue 简单实用的elementUI表格封装
  2. [BZOJ1726][Usaco2006 Nov]Roadblocks第二短路
  3. 电话圈(floyd)
  4. silverligh的数据访问
  5. 再次参加(第七届)商学院徒步戈壁挑战赛,赋词几首
  6. String类的构造与析构相关处理
  7. c语言编译器怎样退出全屏,BOOX 应用软件怎样退出全屏模式?
  8. 三星sd卡无法删除数据_单反相机里的SD卡在电脑中突然无法识别提示要格式化怎么办?...
  9. android媒体播放框架,Android 使用超简单的多媒体播放器JiaoZiVideoPlayer
  10. turtle 函数 方法_学python第十一节:turtle深入 了解