当前位置: 首页 > news >正文

上海营销型网站报价wordpress 智能合约

上海营销型网站报价,wordpress 智能合约,成都软件公司排名,南昌网站设计有限公司P1395 会议 题目描述 有一个村庄居住着 nnn 个村民,有 n−1n-1n−1 条路径使得这 nnn 个村民的家联通,每条路径的长度都为 111。现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要…

P1395 会议

题目描述

有一个村庄居住着 nnn 个村民,有 n−1n-1n1 条路径使得这 nnn 个村民的家联通,每条路径的长度都为 111。现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要把会议地点设置在哪个村民的家中,并且这个距离总和最小是多少?若有多个节点都满足条件,则选择节点编号最小的那个点。

输入格式

第一行,一个数 nnn,表示有 nnn 个村民。

接下来 n−1n-1n1 行,每行两个数字 aaabbb,表示村民 aaa 的家和村民 bbb 的家之间存在一条路径。

输出格式

一行输出两个数字 xxxyyy

xxx 表示村长将会在哪个村民家中举办会议。

yyy 表示距离之和的最小值。

输入输出样例 #1

输入 #1

4
1 2 
2 3 
3 4

输出 #1

2 4

说明/提示

数据范围

对于 70%70\%70% 数据 n≤103n \le 10^3n103

对于 100%100\%100% 数据 n≤5×104n \le 5 \times 10^4n5×104

solution

  • 思路: 其实就是重心,任选一个节点作为 root,第一遍dfs算出各节点子树节点到该节点的距离和,和子树节点个数,第二遍dfs在考虑上从父节点过来的分支距离
  • 具体:
    • 1 设
      f[u]: 以u为根的子树节点距离和,
      siz[u]:以u为根的子树节点个数
      g[u]: 的所有节点到u的距离和
  • 2 递推:v 是 u 的子节点
    • dfs(1, 0)
    •  siz[u] += siz[v];f[u] += siz[v] + f[v];
      
    • dfs2(1, 0)
    •    g[1] = f[1]g[v] = g[u] + (n - 2 * siz[v]);
      

代码

#include<iostream>
#include<algorithm>
#include "cstring"
#include "vector"using namespace std;/** P1395 会议* 题目大意: 有一颗无根无权树,找到树中一个节点,使得其它所有节点的到该点的距离和最小** 思路: 其实就是重心,任选一个节点作为 root,第一遍dfs算出各节点子树节点到该节点的距离和,和子树节点个数* 第二遍dfs在考虑上从父节点过来的分支距离* 具体:* 1 设 f[u]: 以u为根的子树节点距离和,siz[u]:以u为根的子树节点个数,*      g[u]: 的所有节点到u的距离和* 2 递推:v 是 u 的子节点*   dfs(1, 0)*      siz[u] += siz[v];*      f[u] += siz[v] + f[v];*   dfs2(1, 0)*      g[1] = f[1]*      g[v] = g[u] + (n - 2 * siz[v]);**/typedef long long ll;
const int N = 5e4 + 5;int n, siz[N], f[N], g[N], Min, k;
vector<int> e[N];void dfs(int u, int p) {siz[u] = 1;for (int v: e[u]) {if (v == p) continue;dfs(v, u);siz[u] += siz[v];f[u] += siz[v] + f[v];}
}void dfs2(int u, int p) {for (int v: e[u]) {if (v == p) continue;g[v] = g[u] + (n - 2 * siz[v]);if (g[v] < Min || g[v] == Min && v < k) k = v, Min = g[v];dfs2(v, u);}
}int main() {cin >> n;for (int i = 1, x, y; i < n; i++) {cin >> x >> y;e[x].push_back(y);e[y].push_back(x);}dfs(1, 0);Min = f[1], k = 1, g[1] = f[1];dfs2(1, 0);cout << k << ' ' << Min << endl;return 0;
}

结果

在这里插入图片描述

http://www.dtcms.com/a/608969.html

相关文章:

  • 北京企业网站模板建站怎么用wordpress相关文插件
  • 中国建筑土木建设有限公司网站哪里建设网站
  • 公司网站一定要备案吗后台做网站的题
  • 网站规划的基本步骤wordpress主题免费共享
  • 珠海快速网站建设谁给个能用的网址
  • iis7如何设置ip做网站泸县建设局网站
  • 公众号自己做电影网站南通网站建设方案外包
  • 韶关住房和城乡建设网站济南的网站建设
  • 企业网站模板带后台北京天润建设工程有限公司网站
  • 新加坡建设网站食品公司网站模板
  • 网站管理 地址:学生做网站的工作室
  • 优化网站制作方法大全微信怎么关闭小程序消息
  • 国内优秀网站设计欣赏百度官方网站首页
  • 深圳网站设计公司 学校舆情分析报告
  • 教育行业网站建设网站建设 维护费用
  • 金坛做网站的广东自助建站网站
  • google英文网站深圳制作网站建设的企业
  • vue做的手机网站辽宁建设工程信息网业绩录入
  • 如何做好一个企业网站邢台论坛
  • 网站开发的图标鄂应用官方app下载
  • 自己如何做家政网站成立一间网站开发公司
  • 深圳发布稳增长措施上海优化网站方法
  • 建设网站的企业费用360网页游戏大厅
  • 设计网站推荐ps阿里云网站建设9元
  • 教育学校网站源码 php十堰秦楚网 十堰新闻门户网站
  • 教学网站开发代码网站登录人太多进不去怎么办
  • 深圳市手机网站建设品牌免费域名注册解析
  • 网站正在建设中html深圳专业制作网站的公司哪家好
  • 班级网站设计模板怀柔做网站的公司
  • 怎么看一个网站是什么时候做的新手建立企业网站流程