poj 1849 贪心 ||树形dp
来源:互联网 发布:js 循环倒计时 编辑:程序博客网 时间:2024/05/29 18:33
题意是:在m点有两辆车,要清扫所有的路,问走的最短路。题目链接
和poj1935 差不多,poj 1935 是一个人走的最短路。
题解 所有边权和 * 2 —— 树的最长路径。
树形dp的解法不会,
#include<cstdio>#include<cstring>#include<queue>#include<iostream>using namespace std;#define FF freopen("Input.txt","r",stdin)#define mem(x,y) memset(x,y,sizeof(x))#define ll long long#define inf 1000020const int N=100010;int head[N];struct Point{ int v,w; int next;}edge[N*2];int tot,dis[N];inline void init(){ mem(head,-1); tot=0;}void add(int u,int v,int w){ edge[tot].v=v; edge[tot].w=w; edge[tot].next=head[u]; head[u]=tot++;}int bfs(int u,int n){ mem(dis,-1); queue<int>Q; dis[u]=0; Q.push(u); while(!Q.empty()) { int v=Q.front(); Q.pop(); for(int i=head[v];i!=-1;i=edge[i].next) { int s=edge[i].v; if(dis[s]==-1) { dis[s]=dis[v]+edge[i].w; Q.push(s); } } } int Maxn=-1; int pos=-1; for(int i=1;i<=n;i++) if(dis[i]>Maxn) { Maxn=dis[i]; pos=i; } return pos;}int main(){ //FF; int n,i,m; while(~scanf("%d%d",&n,&m)) { init(); int sum=0; for(i=1;i<n;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); add(a,b,c); add(b,a,c); sum+=(c*2); } int pos=bfs(m,n); pos=bfs(pos,n); printf("%d\n",sum-dis[pos]); } return 0;}
- poj 1849 贪心 ||树形dp
- poj 2057 树形DP+一点贪心
- poj 1849 树形dp
- POJ 2057 The Lost House 树形DP+贪心
- POJ 2057 The Lost House 经典树形DP+贪心
- poj 1694 树形贪心
- poj 1849 Two 树形dp好题
- bzoj 1060(贪心+树形DP)
- 【Codeforces708C】【树形dp】【贪心】Centroids
- 51NOD1378 树形DP + 贪心
- 【APIO2010T2】巡逻-贪心+树形DP
- BZOJ3037 创世纪 [贪心][树形DP]
- poj 1770 树形dp
- poj 3342 树形DP
- poj 2486 树形dp
- poj 2486 树形DP
- 【树形dp】POJ 1463
- poj 2486 树形dp
- 从扑克牌中随机抽5张牌,判断是不是一个顺子
- 用UIImagePickerViewController自定义相机界面
- Java并发编程之ConcurrentHashMap
- 第六天
- 关于窗口置前,在程序没有焦点的情况下显示窗口
- poj 1849 贪心 ||树形dp
- 以太网数据包格式
- Android ROM开发--ubuntu下载、编译CyanogenMod7
- HTML 关于<hr>标签,虚线
- Hibernate性能优化
- [MFC]获取文本框里面的内容
- Mantis OS+Micaz节点收发数据
- MediaWiki用户如何才能重置密码?
- 从鸿沟理论看腾讯的发展