题面:http://poj.org/problem?id=3398

本题是求树的最小支配集裸题。Code:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<ctime>
using namespace std;
const int N=10005,INF=0x3f3f3f3f;
struct Edge{int v,Next;
}Edge[N];
int head[N],Cnt;
int f[N][3];
void Push(int u,int v){Edge[Cnt].v=v;Edge[Cnt].Next=head[u];head[u]=Cnt++;
}
void dfs(int u,int fa){f[u][2]=0;f[u][0]=1;int s=0,sum=0,inc=INF;for(int i=head[u];i!=-1;i=Edge[i].Next){int v=Edge[i].v;if(v==fa){continue;}dfs(v,u);f[u][0]+=min(f[v][0],f[v][2]);if(f[v][0]<=f[v][1]){sum+=f[v][0];s=1;}else{sum+=f[v][1];inc=min(inc,f[v][0]-f[v][1]);}if(f[v][1]!=INF && f[u][2]!=INF){f[u][2]+=f[v][1];}else{f[u][2]=INF;}if(inc==INF&&!s){f[u][1]=INF;}else{f[u][1]=sum;if(!s){f[u][1]+=inc;}}}
}
int main(){int n,u,v,opt;while(scanf("%d",&n)!=EOF){Cnt=1;memset(head,-1,sizeof(head));for(int i=0;i<n-1;i++){scanf("%d%d",&u,&v);Push(u,v);Push(v,u);}for(int i=0;i<=n;i++){for(int j=0;j<=2;j++){f[i][j]=INF;}}dfs(1,-1);int ans=min(f[1][0],f[1][1]);printf("%d\n",ans);scanf("%d",&opt);if(opt==-1){break;}}return 0;
}

转载于:https://www.cnblogs.com/ukcxrtjr/p/11243539.html

POJ3398 Perfect Service相关推荐

  1. Perfect service(树形dp)

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

  2. uva 1218 Perfect Service 树形dp

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

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

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

  4. uva 1218——Perfect Service

    题意:有n个机器组成的树形结构,要求一台服务器必须连接一台电脑,求使用的最少的服务器.. 思路: 树形DP,和前面的有道题目类似.在dfs遍历树的时候找到选当前结点和不选当前节点的最大状态,多一个两个 ...

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

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

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

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

  7. 【学时总结】◆学时·VIII◆ 树形DP

    ◆学时·VIII◆ 树形DP DP像猴子一样爬上了树--QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...

  8. poj 3398 (树上的最小支配集)

    入门题吧... Perfect Service Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1220   Accepted ...

  9. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

最新文章

  1. opencv中xml/yml文件操作类
  2. 分治法求数组最大值 c语言,使用分治法求最大子数组的下标。
  3. [转]被当做狗和鸡来驱赶的百姓
  4. 3-5Tensor创建编程实例
  5. 网易云课堂测试微专业前置课
  6. 《穷爸爸,富爸爸》读书笔记
  7. php的cvs,php基于Fleaphp框架实现cvs数据导入MySQL的方法
  8. 【软件设计师考试】《软件设计师教程》(一)
  9. 学习笔记(02):Qt视频教程-基础实例进阶-网页爬虫-图片抓取
  10. Adobe Camera Raw v15.0.0.1264 增效工具
  11. android电视直播卡顿,智能电视或电视盒子经常会在看直播的时候卡顿
  12. HTTP协议入门 状态码大全
  13. 3dsmax渲染AVI格式动画的画面不清晰
  14. java 微信请求超时_java – SQL服务器“超出锁定请求超时时间”..再次
  15. Android Studio实现内容丰富的旅游App
  16. 辽宁计算机考研学校二本,二本院校逆袭985到底有多难?
  17. 慢性疲劳免疫失调综合症(CFIDS)
  18. 检查企业71万余家(次),查处椎
  19. 电信运营商的网络介绍
  20. CentOS7挂载CentOS7 everything安装光盘和设置yum源为挂载的光盘

热门文章

  1. 找某個ColumnName在那些Tables
  2. GFS - The Google File System
  3. AJPFX实例集合嵌套之ArrayList嵌套ArrayList
  4. 很是迷茫 ERP和HIS哪个更有发展前途?
  5. 用官方的SSD1306.py 驱动 OLED
  6. 阿里云正式推出高防DDoS专家服务
  7. ASP.NET文件下载
  8. 小谈RTMP中AMF3类型的Command message
  9. android webView加载网络视频
  10. OutOfMemoryError dump memory