博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 1218 Perfect Service [DFS+DP]
阅读量:4574 次
发布时间:2019-06-08

本文共 1412 字,大约阅读时间需要 4 分钟。

题意:给定一个树形的机器结构,安装服务器,每台服务器恰好跟一台服务器相邻,问最少装几台服务器。

首先DFS把树建立起来,然后动规求解,注意设置无穷大inf后累加要防止超int范围。

#define _CRT_SECURE_NO_WARNINGS#include 
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn = 10240, inf = (1<<27);int n, vis[maxn], dp[maxn][3];vector
G[maxn], sons[maxn];void DFS(const int u){ for (unsigned i = 0; i != G[u].size(); ++i) if(!vis[G[u][i]]) { sons[u].push_back(G[u][i]); vis[G[u][i]] = true; DFS(G[u][i]); }}int solve(const int u, const int k){ if (dp[u][k] != -1) return dp[u][k]; int & ans = dp[u][k]; if (k == 0) ans = 1; if (k == 1) ans = 0; if (k == 2) ans = inf; for (unsigned i = 0; i != sons[u].size(); ++i){ int v = sons[u][i]; if (k == 0) ans += min(solve(v, 0), solve(v, 1)); if (k == 1) ans += solve(v, 2); if (k == 2) ans = min(ans, solve(u, 1) - solve(v, 2) + solve(v, 0)); if (ans > inf) ans = inf; } return ans;}int main(){ //freopen("in.txt", "r", stdin); while (cin >> n){ memset(G, 0, sizeof(G)); memset(sons, 0, sizeof(sons)); memset(vis, 0, sizeof(vis)); memset(dp, -1, sizeof(dp)); for (int i = 1; i < n; ++i){ int x, y; cin >> x >> y; G[x].push_back(y); G[y].push_back(x); } vis[1] = true; DFS(1); cout << min(solve(1, 0), solve(1, 2)) << endl; cin >> n; if (n == -1) return 0; } return 0;}

转载于:https://www.cnblogs.com/kunsoft/p/5312669.html

你可能感兴趣的文章
mesos cluster
查看>>
转 Linux会话浅析(写得极好,表述清楚语言不硬)
查看>>
Altium Designer 中差分走线
查看>>
linux 解压缩命令
查看>>
GDUT校赛
查看>>
递归方程组解的渐进阶的求法——差分方程法
查看>>
(HDU)1076 --An Easy Task(简单任务)
查看>>
团队精神与集体主义的区别?
查看>>
Spring Boot 入门(Spring Cloud方向)
查看>>
仿淘宝商品图片放大镜效果(鼠标移动上去会出现放大的图片,并且可以移动)...
查看>>
AngularJS(九):路由
查看>>
Google chrome浏览器HTML5 Beta项目, 未来Web前瞻!
查看>>
GPS.NET 和 GeoFramework开源了
查看>>
汇编:采用址表的方法编写程序实现C程序的switch功能
查看>>
AtiveMQ初次连接的 http error:503 连接错误 Prolem accessing /.Reason : Service Unavailable...
查看>>
Lua1.1 Lua 的参考手册 (三)
查看>>
OFO和摩拜共享单车
查看>>
Linux软件安装管理之1——rpm命令管理
查看>>
visual studio 2017 使用笔记
查看>>
iTerm2 半透明颜色主题与字体配置
查看>>