Wunder Fund Round 2016 D. Hamiltonian Spanning Tree
来源:互联网 发布:网络热敏打印机 编辑:程序博客网 时间:2024/04/20 21:26
分析:树形DP
主要看x
代码:
#include <bits/stdc++.h>using namespace std;#define FOR(i,x,y) for(int i = x;i < y;++ i) #define IFOR(i,x,y) for(int i = x;i > y;-- i) #define pb push_backtypedef long long LL;typedef vector <int> VI;const int maxn = 200010;const int inf = 1<<30;int dp[maxn][2],du[maxn],n;LL x,y;VI mat[maxn];void dfs(int u,int fa){ int minx = inf; int num = 0,sum = 0; FOR(i,0,(int)mat[u].size()){ int v = mat[u][i]; if(v == fa) continue; dfs(v,u); if(dp[v][0] == dp[v][1]) num ++; sum += dp[v][0]; minx = min(dp[v][1]-dp[v][0],minx); } if(minx == inf) dp[u][1] = 1; else dp[u][1] = minx + sum; if(num >= 2) dp[u][0] = dp[u][1]-1; else dp[u][0] = dp[u][1]; //printf("id:%d\t dp[u][0]:%d\t dp[u][1]:%d\n",u,dp[u][0],dp[u][1]);}int main(){ scanf("%d%I64d%I64d",&n,&x,&y); FOR(i,0,n+1) mat[i].clear(),du[i] = 0;; FOR(i,1,n){ int u,v; scanf("%d%d",&u,&v); mat[u].pb(v); mat[v].pb(u); du[u] ++; du[v] ++; } if(x >= y){ bool flag = false; FOR(i,1,n+1) if(du[i] == n-1) { flag = true;break; } if(flag){ printf("%I64d\n",y*(n-2)+x); } else{ printf("%I64d\n",y*(n-1)); } } else{ dfs(1,-1); printf("%I64d\n",(dp[1][0]-1)*y+(n-dp[1][0])*x); } return 0;}
0 0
- Wunder Fund Round 2016 D. Hamiltonian Spanning Tree
- Wunder Fund Round 2016 D. Hamiltonian Spanning Tree(贪心+dp)
- Wunder Fund Round 2016 D. Hamiltonian Spanning Tree(贪心+dp)★ ★ ★
- 【Wunder Fund Round 2016 (Div 1 + Div 2 combined)D】【贪心 dfs】Hamiltonian Spanning Tree 树的最小链划分
- Codeforces Wunder Fund Round 2016 C D E
- Codefroces 618D Hamiltonian Spanning Tree 树型动规
- Codeforces 618 D Hamiltonian Spanning Tree
- codeforces 618D. Hamiltonian Spanning Tree
- 【19.27%】【codeforces 618D】Hamiltonian Spanning Tree
- Wunder Fund Round 2016 A. Slime Combining
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)(A、B、C、D)题解
- CF# Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) C计算几何 + D 图论
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)-D(DFS)
- CF618D - Hamiltonian Spanning Tree
- CodeForces 618 D Hamiltonian Spanning Tree(树形DP)
- codeforces 618D Hamiltonian Spanning Tree(dfs)
- Codeforces 618 D Hamiltonian Spanning Tree 贪心+dp
- CodeForces 618 D.Hamiltonian Spanning Tree(dfs)
- Python 安装包,简易方法
- % 运算符 2
- java集合基础
- Struts2的工作原理
- Reactor构架模式
- Wunder Fund Round 2016 D. Hamiltonian Spanning Tree
- hdu 1907 John 尼姆博奕
- Maven学习 (四) 使用Nexus搭建Maven私服
- 数据类型
- 街区最短路径问题
- Java IO流学习总结
- HDU 5505 GT and numbers
- hdu——2019数列有序!
- 蓝桥杯 基础练习 字母图形 有瑕丝