uva 1218 完美服务器 树形dp 染色问题
来源:互联网 发布:液晶电视怎样连接网络 编辑:程序博客网 时间:2024/05/22 06:54
详解见紫书 283页。
<pre name="code" class="cpp">#include<bits/stdc++.h>#define INF 10000000using namespace std;const int N= 10010;vector<int>vec[N];int dp[N][3]; ///int vis[N];void dfs(int u){ int len=vec[u].size(); vis[u]=1; dp[u][0]=1; dp[u][1]=0; dp[u][2]=N; ///初始化太大了会wa,会出现累加到了int上限值然后爆掉 queue<int>q; ///普通队列,记录没访问的子节点 for(int i=0;i<len;i++){ int v=vec[u][i]; if(vis[v])continue; dfs(v); dp[u][0]+=min(dp[v][0],dp[v][1]); dp[u][1]+=dp[v][2]; q.push(v); } ///因为dp[u][1]必须是算完后的结果 while(!q.empty()){ int v=q.front(); ///一定是u的未访问的子节点 dp[u][2]=min(dp[u][1]-dp[v][2]+dp[v][0],dp[u][2]); q.pop(); }}int main(){ int n,op,u,v; while(~scanf("%d",&n)&&n!=-1){ if(!n) continue; memset(vis,0,sizeof(vis)); memset(vec,0,sizeof(vec)); for(int i=0;i<n-1;i++){ scanf("%d%d",&u,&v); vec[u].push_back(v); vec[v].push_back(u); } dfs(1); printf("%d\n",min(dp[1][0],dp[1][2])); ///不能包含dp[1][1]; } return 0;}
0 0
- uva 1218 完美服务器 树形dp 染色问题
- UVA 1218 完美服务 树形dp
- hdu 4340 树形dp+染色问题
- 树形DP(完美的服务,uva 1218)
- UVA 1218 (树形DP)
- UVA 1218 树形DP
- UVA1218,POJ3398 完美服务器(树形DP)
- 例题9-14 UVA 1218 Perfect Service 完美的服务(树形dp)
- 【HAOI2015】【树形dp】树上染色
- 【bzoj4033】树上染色 树形dp
- BZOJ 1304 叶子的染色 树形DP
- bzoj 4033: [HAOI2015]树上染色 树形dp
- [树形DP] BZOJ 4033 [HAOI2015]树上染色
- (noip 模拟 染色)<树形DP>
- BZOJ 4033: [HAOI2015]树上染色 树形dp
- [bzoj4033][HAOI2015]树上染色(树形dp)
- [BZOJ]4033: [HAOI2015]树上染色 树形DP
- 【BZOJ4033】【HAOI2015】树上染色 树形DP
- 文章标题
- canny边缘检测C\C++实现
- Android学习之自己需要提高和巩固的知识
- OC NSString的定义方法
- java获取路径
- uva 1218 完美服务器 树形dp 染色问题
- Ubuntu16.04下安装ns2.35
- Hust oj 1629 统计图(水题)
- OSGI 框架搭建
- Hibernate使用注解配置映射
- 剑指offer[8]变态跳台阶
- hdu 4664 Triangulation
- Android中Bitmap的分析与使用
- HDU5444(2015长春网赛)——Elven Postman(树的遍历,dfs)