博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
阅读量:5766 次
发布时间:2019-06-18

本文共 1201 字,大约阅读时间需要 4 分钟。

 

1 /* 2     题意:求一个点为根节点,使得到其他所有点的距离最短,是有向边,反向的距离+1 3     树形DP:首先假设1为根节点,自下而上计算dp[1](根节点到其他点的距离),然后再从1开始,自上而下计算dp[v], 4             此时可以从上个节点的信息递推出来 5 */ 6 #include 
7 #include
8 #include
9 #include
10 using namespace std;11 12 const int MAXN = 2e5 + 10;13 const int INF = 0x3f3f3f3f;14 struct Edge {15 int v, w;16 };17 vector
G[MAXN];18 int dp[MAXN];19 bool vis[MAXN];20 int n, res;21 22 void DFS(int u) {23 vis[u] = true;24 for (int i=0; i
= dp[i]) {54 mn = dp[i]; p = i;55 }56 }57 printf ("%d\n", mn);58 for (int i=1; i<=n; ++i) {59 if (i == p) {60 printf ("%d\n", i); break;61 }62 if (dp[i] == mn) printf ("%d ", i);63 }64 }65 66 int main(void) { //Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland67 // freopen ("A.in", "r", stdin);68 69 while (scanf ("%d", &n) == 1) {70 for (int i=1; i<=n; ++i) G[i].clear ();71 for (int i=1; i<=n-1; ++i) {72 int u, v; scanf ("%d%d", &u, &v);73 G[u].push_back ((Edge) {v, 0});74 G[v].push_back ((Edge) {u, 1});75 }76 77 work ();78 }79 80 return 0;81 }

 

转载于:https://www.cnblogs.com/Running-Time/p/4663538.html

你可能感兴趣的文章
lamp+nginx代理+discuz+wordpress+phpmyadmin搭建一
查看>>
Windows Phone 7 中各种Task解说(启动器与选择器)
查看>>
windows server 2016 活动目录(二)
查看>>
openstack G版 修改vm的flavor级别
查看>>
python_控制台输出带颜色的文字方法
查看>>
Android组件化最佳实践 ARetrofit原理
查看>>
舍弃浮躁, 50条重要的C++学习建议
查看>>
同步手绘板——将View的内容映射成Bitmap转图片导出
查看>>
【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!...
查看>>
微信小程序之wx.navigateback往回携带参数
查看>>
陌陌和请吃饭之类的应用,你要是能玩转,那就厉害了
查看>>
递归的运行机制简单理解
查看>>
汉字转阿斯克马值
查看>>
【supervisord】部署单进程服务的利器
查看>>
部署Replica Sets及查看相关配置
查看>>
倒序显示数组(从右往左)
查看>>
文献综述二:UML技术在行业资源平台系统建模中的应用
查看>>
Swift 学习 用 swift 调用 oc
查看>>
第三章 Python 的容器: 列表、元组、字典与集合
查看>>
微信小程序开发 -- 点击右上角实现转发功能
查看>>