UVALive 6436 The Busiest City (树形DP)
来源:互联网 发布:lg电视如何看网络电视 编辑:程序博客网 时间:2024/06/11 19:45
题意:给出n个顶点,n-1条边,对于每一个顶点来说每有一条路径经过,繁荣度+1,求最大繁荣度。
思路:从任意一个节点开始dfs,找到当前根有多少子集,和不在当前根子集中的节点做乘法,就是当前根的子集和外
面各个点的路径数,就是经过当前根的一部分次数,设为sum1。然后再在根内,假设这个根是A,找到A的每一个子
集和A内其他子集的乘积,这是根内的路径个数,也是经过A的另一部分次数sum2,但是每一个子集都和其他子集做
乘法,相当于乘了两遍,最后再除以2,和原来的次数sum1相加就是总的经过A的路径数目。
#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxn = 2e4+5;vector<int> g[maxn];int n, ans, cnt[maxn];void dfs(int cur, int pre){ for(int i = 0; i < g[cur].size(); i++) { int v = g[cur][i]; if(v != pre) { dfs(v, cur); cnt[cur] += cnt[v]; } } int sum1 = cnt[cur]*(n-1-cnt[cur]); int sum2 = 0; for(int i = 0; i < g[cur].size(); i++) { int v = g[cur][i]; if(v != pre) sum2 += cnt[v]*(cnt[cur]-cnt[v]); } int sum = sum1+sum2/2; if(sum > ans) ans = sum; cnt[cur]++;}int main(void){ int t, ca = 1; cin >> t; while(t--) { for(int i = 0; i < maxn; i++) g[i].clear(); scanf("%d", &n); for(int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); g[u].push_back(v); g[v].push_back(u); } ans = 0; memset(cnt, 0, sizeof(cnt)); dfs(1, 0); printf("Case #%d: %d\n", ca++, ans); } return 0;}
1 0
- UVALive 6436 The Busiest City (树形DP)
- Uva 6436 - The Busiest City 树形DP
- UVALive 6436 The Busiest City
- UVA-6436 The Busiest City 树形DFS求解
- UVALive 4015 树形dp
- UVALive 5002/ lightoj 1382 The Queue(树形DP)
- hdu 5148 City (树形dp)
- 简单树形dp uvaLive 4472
- UVALive - 4015 Caves 树形DP
- UVALive 4015 - Caves(树形DP)
- uvalive 4015 树形背包dp
- UVALive 4015 Caves--树形dp
- [树形DP] IOI 2012 Ideal city
- 【树形dp】UVALive 2038 Strategic game
- UVALive 2038 Strategic game--树形dp
- UVALive 3412 Pesky Heroes(树形dp)
- uvalive 5088 hdu3066(树形dp)
- UVALive 6631|Jingle Balls|树形DP
- 在Word2016公式编辑器中一招搞定等号对齐问题
- Linux终端彩色打印+终端进度条
- typedef 与 typename 的用法
- 快速排序
- 实现侧滑栏的三种形式
- UVALive 6436 The Busiest City (树形DP)
- Java学习-将Vector转化为数组
- java 浅谈get与post的区别
- 剑指offer前10题
- JavaMail IMAPFolder.getMessageByUID 获取QQ和腾讯企业邮箱新邮件的问题
- Add Two Numbers
- springMVC编码过滤器只对post方法有效的解决方法
- 深入mysql并发插入优化详解
- POJ 2488 A Knight's Journey