cf 219D Choosing Capital for Treeland 树形dp
来源:互联网 发布:linux下搭建shadowsock 编辑:程序博客网 时间:2024/04/28 11:46
一遍dfs找到1节点需要装换的边数,然后再一次dfs求得每个点的值,若i能到j,则dp[j]=dp[i]+1,否则dp[j]=dp[i]-1。
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<iostream>using namespace std;vector<int> tree[200005];vector<int> dir[200005];int dp[200005];int dfs1(int now,int fa=-1){ int tot=0; for(int i=0;i<tree[now].size();i++) { int to=tree[now][i]; if(to!=fa) { tot+=(dfs1(to,now)+(dir[now][i]<0?1:0)); } } return tot;}void dfs2(int now,int tot,int fa=-1){ dp[now]=tot; for(int i=0;i<tree[now].size();i++) { int to=tree[now][i]; if(to!=fa) { dfs2(to,tot+dir[now][i],now); } }}int main(){ int n; while(~scanf("%d",&n)) { int a,b; for(int i=1;i<n;i++) { scanf("%d%d",&a,&b); tree[a].push_back(b); tree[b].push_back(a); dir[a].push_back(1); dir[b].push_back(-1); } int t=dfs1(1); dfs2(1,t); int mins=3000000; for(int i=1;i<=n;i++) mins=min(dp[i],mins); printf("%d\n",mins); for(int i=1;i<=n;i++) { if(dp[i]==mins) { printf("%d ",i); } } puts(""); } return 0;}
4 1
- [CF 219D]Choosing Capital for Treeland[树形DP]
- cf 219D Choosing Capital for Treeland 树形dp
- CF 219 D Choosing Capital for Treeland(树形dp)
- CF 219D. Choosing Capital for Treeland 树形DP
- CF 219D Choosing Capital for Treeland (树形dp)
- CF 219D Choosing Capital for Treeland (树形dp)
- CF#219 D. Choosing Capital for Treeland(树形DP)
- CF 219D Choosing Capital for Treeland 树形DP
- CF 219D Choosing Capital for Treeland 【树形dp + 思维】
- codeforces 219D D. Choosing Capital for Treeland(树形dp)
- CodeForces 219D Choosing Capital for Treeland (树形dp)
- 树形dp 219D Choosing Capital for Treeland
- CodeForces 219D Choosing Capital for Treeland | 树形dp
- Codeforces 219D - Choosing Capital for Treeland(树形dp)
- codeforces 219D Choosing Capital for Treeland(树形DP)
- CodeForces 219D Choosing Capital for Treeland (树形DP)
- CodeForces 219D Choosing Capital for Treeland(树形DP)
- codeforces 219D Choosing Capital for Treeland (树形dp)
- 互联网已成显学
- SSH原理与运用(二):远程操作与端口转发
- 将二叉树在控制台按树形打印
- EIGRP度量值计算公式
- rsync远程备份
- cf 219D Choosing Capital for Treeland 树形dp
- SRM 399
- 独处
- 华为U8800刷机带来的屏幕乱点又解决
- 谢尔曼法案
- 2014年1月20号
- 庆祝开博,分享一个好东西!
- hdu 4055 Number String
- 如何解决刷机变砖电脑不识别