题意:求树的重心

题解:先跑一遍dfs 预处理出这种遍历方式每个节点的儿子(含自己)的数

   再跑一遍 每个点的值就是他所有儿子中取一个最大值 再和它父亲这个方向比较一下

   又被卡常了 vector一直tle 需要用前向星....

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std; int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} struct node
{
int no, to, nex;
}E[]; int n, rt;
int du[];
int head[];
int son[];
int dp[]; int dfs1(int x, int fa)
{
son[x] = ;
int c = head[x];
for(int i = c; i; i = E[i].nex)
{
int c = E[i].to;
if(c == fa) continue; son[x] += dfs1(c, x);
}
return son[x];
} void dfs2(int x, int fa)
{
dp[x] = n - son[x];
int c = head[x];
for(int i = c; i; i = E[i].nex)
{
int c = E[i].to;
if(c == fa) continue; dp[x] = max(dp[x], son[c]);
dfs2(c, x);
}
} int main()
{
while(~scanf("%d", &n))
{
for(int i = ; i <= n; i++) du[i] = son[i] = dp[i] = head[i] = ; int cn = ;
for(int i = ; i < n; i++)
{
int u, v;
u = read(); v = read();
E[++cn].no = u;
E[cn].to = v;
E[cn].nex = head[u];
head[u] = cn; E[++cn].no = v;
E[cn].to = u;
E[cn].nex = head[v];
head[v] = cn;
du[u]++;
du[v]++;
} for(int i = ; i <= n; i++)
if(du[i] == )
{
rt = i;
break;
} int o = dfs1(rt, -);
dfs2(rt, -); int ans = n + ;
int cnt = ;
for(int i = ; i <= n; i++) ans = min(ans, dp[i]);
for(int i = ; i <= n; i++)
if(dp[i] == ans) cnt++; for(int i = ; i <= n; i++)
{
if(dp[i] == ans)
{
if(cnt == )
{
printf("%d\n", i);
break;
}
else printf("%d ", i);
cnt--;
}
}
}
return ;
}

POJ3107 Godfather (树形DP)的更多相关文章

  1. POJ 3107.Godfather 树形dp

    Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7536   Accepted: 2659 Descrip ...

  2. [poj3107/poj2378]Godfather/Tree Cutting树形dp

    题意:求树的重心(删除该点后子树最大的最小) 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可. 此题一开始一直T,后 ...

  3. POJ 1655 BalanceAct 3107 Godfather (树的重心)(树形DP)

    参考网址:http://blog.csdn.net/acdreamers/article/details/16905653   树的重心的定义: 树的重心也叫树的质心.找到一个点,其所有的子树中最大的 ...

  4. poj3107(树的重心,树形dp)

    题目链接:https://vjudge.net/problem/POJ-3107 题意:求树的可能的重心,升序输出. 思路:因为学树形dp之前学过点分治了,而点分治的前提是求树的重心,所以这题就简单水 ...

  5. 【树形dp】Godfather

    [POJ3107]Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7212   Accepted: 253 ...

  6. [poj3107]Godfather_树形dp_树的重心

    Godfather poj-3107 题目大意:求树的重心裸题. 注释:n<=50000. 想法:我们尝试用树形dp求树的重心,关于树的重心的定义在题目中给的很明确.关于这道题,我们邻接矩阵存不 ...

  7. 树形 DP 总结

    树形 DP 总结 本文转自:http://blog.csdn.net/angon823/article/details/52334548 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在“树 ...

  8. 树形DP

    切题ing!!!!! HDU  2196 Anniversary party 经典树形DP,以前写的太搓了,终于学会简单写法了.... #include <iostream> #inclu ...

  9. 【转】【DP_树形DP专辑】【9月9最新更新】【from zeroclock's blog】

    树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树.三叉树.静态搜索树.AV ...

随机推荐

  1. 分布式数据库DDM Sidecar模式负载均衡

    简介 1.分布式数据库中间件 DDM 分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离 ...

  2. simple-framework(MaliSDK框架分析)

    simple-framework(Mali SDK框架分析) 1.全部的定义及实现放在同一个命名空间中.文件包括#include一般在命名空间的外面. 总的命名空间为namespace MaliSDK ...

  3. Android之应用程序怎样调用支付宝接口

    http://blog.csdn.net/lilidejing/article/details/19483717 近期在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口.由于用的人比 ...

  4. ASP.NET MVC Model之二模型绑定

    Asp.net mvc中的模型绑定,或许大家经常用,但是具体说他是怎么一回事,可能还是会有些陌生,那么,本文就带你理解模型绑定.为了理解模型绑定,本文会先给出其定义,然后对通过比,来得出使用模型绑定的 ...

  5. HDU5465/BestCoder Round #56 (div.2) 二维树状数组

    Clarke and puzzle 问题描述 克拉克是一名人格分裂患者.某一天,有两个克拉克(aa和bb)在玩一个方格游戏. 这个方格是一个n*mn∗m的矩阵,每个格子里有一个数c_{i, j}c​i ...

  6. Bootstrap 过渡效果 transition.js源码分析

    前言: 阅读建议:去github下载一个完整dom然后把,本篇代码复制进去然后运行就好了以地址 Bootstrap 自带的 JavaScript 插件的动画效果几乎都是使用 CSS 过渡实现的,那么判 ...

  7. linux进程间通信——netlink【转】

    本文转载自:http://blog.csdn.net/wangyuling1234567890/article/details/21561457 今天在看用户态与内核态通信相关东西时,发现了关于net ...

  8. CSU 1806 Toll 自适应simpson积分+最短路

    分析:根据这个题学了一发自适应simpson积分(原来积分还可以这么求),然后就是套模板了 学习自适应simpson积分:http://blog.csdn.net/greatwall1995/arti ...

  9. ModuleNotFoundError: No module named 'PIL'

    错误:ModuleNotFoundError: No module named 'PIL' 解决办法: pip install Pillow

  10. 【167】IDL 中相关技巧

    IDL 中相关技巧 1. 注释:分号“;”表示注释内容的开始. 2. 续行:最后一个字符是“$”,那么本行将紧接着下一行,续行标志.(换行符,$+回车) 3. 中文编码:窗口>首选项>常规 ...