poj 1192 最优连通子集
来源:互联网 发布:淘宝登录界面无法打开 编辑:程序博客网 时间:2024/06/05 06:48
题目:http://poj.org/problem?id=1192
题意:求一个无向图的所有子树的权值和的最大值。
先把树建立起来,然后在树上进行一遍dfs就行了。
代码:
#include<cstdio>#include<cstring>#include<vector>#include<map>using namespace std;const int inf=-999999999;typedef pair<int,int> pa;map<pa,int> hash;vector<int> p[1005];int val[1005],vis[1005],s[1005];int n,Max;int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}};void dfs(int u){ int i,v; vis[u]=1; s[u]=val[u]; for(i=0;i<p[u].size();i++) { v=p[u][i]; if(vis[v]) continue; dfs(v); if(s[v]>0) s[u]+=s[v]; } if(s[u]>Max) Max=s[u];}int main(){ int i,j,x,y,c; scanf("%d",&n); hash.clear(); for(i=0;i<=n;i++) p[i].clear(); memset(vis,0,sizeof(vis)); memset(s,0,sizeof(s)); for(i=1;i<=n;i++) { scanf("%d%d%d",&x,&y,&c); hash[pa(x,y)]=i; val[i]=c; for(j=0;j<4;j++) { int xx=x+d[j][0],yy=y+d[j][1]; if(hash.count(pa(xx,yy))) { int tp=hash[pa(xx,yy)]; p[tp].push_back(i); p[i].push_back(tp); } } } Max=inf; dfs(1); printf("%d\n",Max); return 0;}
- POJ 1192 最优连通子集
- poj 1192 最优连通子集
- poj 1192 最优连通子集
- POJ 1192最优连通子集
- poj 1192 最优连通子集
- POJ-1192-最优连通子集
- POJ 1192 最优连通子集
- POJ 1192 -最优连通子集 树形DP
- poj 1192 最优连通子集 树状dp
- poj 1192 最优连通子集 树状dp
- POJ 1192 最优连通子集(树上DP)
- POJ 1192 最优连通子集 中文
- poj 1192 最优连通子集 (树形dp)
- POJ-1192 最优连通子集(树形DP入门+模板)
- POJ 1192 最优连通子集 (树形dp)
- poj 1192 最优连通子集(树形dp)题目好难懂。。。
- poj 1192 最优连通子集 树的孩子兄弟表示法+简单树型dp
- POJ 1192 最优连通子集 最详细的题解 (无向树树形DP)
- iframe的父类 子类相互调用
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- Python3与Python2中print的用法改变与Class获取属性学习
- monster campaign
- 设计模式之抽象工厂模式
- poj 1192 最优连通子集
- PHP好用的上传类
- python使用文件对话框
- 设计模式之单件模式
- 如何写出高质量的JavaScript代码
- Android HAL实例解析 .
- SIFT特征提取代码运行总结
- 暗黑传奇地图编辑器
- 同心新集