Problem K. Road Network

题目链接
Arab Collegiate Programming Contest 2015

题意:
树形的公路,如果阻塞道路可以断开两个区域彼此的连接,则道路是脆弱的。现在只能修建一条公路尽可能来避免这种情况。

分析:
用这一条公路连成一个环,那么这个环上的所有路都不是脆弱的。那么我们要选一条最长的链把它连起来,这是最优的情况。这就是求树的直径。与我的这篇题解相似。

Code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
int n, dp[N];
vector<int> e[N];
int ans;
void dfs(int c, int f)
{dp[c] = 1;for (auto v : e[c]){if (v == f)continue;dfs(v, c);ans = max(ans, dp[c] + dp[v]);dp[c] = max(dp[c], dp[v] + 1);}ans = max(ans, dp[c]);
}
int main()
{ios::sync_with_stdio(false), cin.tie(nullptr);int T;cin >> T;while (T--){cin >> n;ans = -1e8; //注意初始化for (int i = 0; i <= n; i++)dp[i] = 0, e[i].clear();for (int i = 1; i < n; i++){int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs(1, 0);cout << n - ans << endl;}return 0;
}

Problem K. Road Network - ACPC2015(求树的直径 dp)相关推荐

  1. hdu 4607 Park Visit 求树的直径

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 Claire and her little friend, ykwd, are travelli ...

  2. 求树的直径+并查集(bfs,dfs都可以)hdu4514

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4514 这题主要是叫我们求出树的直径,在求树的直径之前要先判断一下有没有环 树的直径指的就是一棵树上面距 ...

  3. 树上子链(树形dp求树的直径)

    树上子链 题意: 给定一棵树 T ,树 T 上每个点都有一个权值. 定义一颗树的子链的大小为:这个子链上所有结点的权值和 . 请在树 T 中找出一条最大的子链并输出. 题解: 求树的直径,题目中存在负 ...

  4. HDU4612+Tarjan缩点+BFS求树的直径

    tarjan+缩点+树的直径 题意:给出n个点和m条边的图,存在重边,问加一条边以后,剩下的桥的数量最少为多少. 先tarjan缩点,再在这棵树上求直径.加的边即是连接这条直径的两端. 1 /* 2 ...

  5. 求树的直径的两种方法

    树的直径 树型dp求树的直径 优缺点: 优点为可以处理边权为负的情况,但不易得到直径的路径(指树的直径经过什么点). 代码模板: #include<bits/stdc++.h> using ...

  6. 《鲁滨逊漂流记》题解(LCA算法求树的直径)

    Description <鲁滨逊漂流记>只讲到了鲁滨逊在岛上建立起一个自给自足的生态环境.而大家不知道的是,在此之后,鲁滨逊因为太无聊,开始探索周边的岛屿,一共 NNN 天.鲁滨逊第 11 ...

  7. F - Warm up - hdu 4612(缩点+求树的直径)

    题意:有一个无向连通图,现在问添加一条边后最少还有几个桥 分析:先把图缩点,然后重构图为一棵树,求出来树的直径即可,不过注意会有重边,构树的时候注意一下 *********************** ...

  8. 求树的直径(两种方法)

    ① 两次dfs 方法:先从任意一点P出发,找离它最远的点Q,再从点Q出发,找离它最远的点W,W到Q的距离就是是的直径 证明如下: ①若P已经在直径上,根据树的直径的定义可知Q也在直径上且为直径的一个端 ...

  9. 求树的直径算法以及证明

    以下为两次dfs(bfs)的做法以及正确性证明. 算法步骤 (1)任取树上一点S,以S为源点BFS得S到各个顶点的d值: (2)取d值最大者之一为P,再以P为源点BFS得P到各个顶点的d值: (3)再 ...

最新文章

  1. 【软件质量】软件质量特性因子
  2. 10个好用的Web日志安全分析工具
  3. Python Matplotlib
  4. 【转载】文件上传命令rz和下载命令sz的安装
  5. 扇贝有道180915每日一句
  6. JavaScript学习笔记
  7. 计算机应用基础多媒体应用试题,2020年9月统考《计算机应用基础》多媒体技术试题及答案2...
  8. 仙剑奇侠传脚本制作教程
  9. DirectX11学习笔记五 摄像机类
  10. 计算机如何安装程序,如何手动安装计算机驱动程序
  11. android 超链接事件,Android之捕获TextView超链接
  12. Gris 游戏开发-day04
  13. 7.5 SNN《脉冲神经网络研究进展综述》笔记
  14. Android分屏模式代码实现
  15. 聚观早报 | 明年起手机预装APP均可卸载;爱奇艺VIP会员再次涨价
  16. 【极致通话降噪】高通QCC3071 三麦克风通话降噪方案
  17. 东北大学计算机硬件题库,东北大学20春学期《计算机硬件技术基础》在线平时作业123答案100...
  18. 微信小程序使用真机或开发工具进行http请求开发测试亲测有效
  19. 10个最好的照片分享网站
  20. 联想小新air13装双系统_联想小新air13pro安装ubuntu双系统要点笔记

热门文章

  1. 日期时间在ios上显示错误
  2. 图的割点 图的割边 二分图
  3. 关于微信小程序分享及分享朋友圈、复制链接
  4. (Tekla Structures二次开发)自动标注尺寸展示
  5. 购物足迹功能php,wordpress实现访客足迹功能
  6. 一文了解Java隐式类型转换
  7. Moblin v2开发环境设置——创建一个新应用程序
  8. html图片左侧留白,HTML+CSS布局img图片元素出现空白的问题
  9. centos7安装Mysql8.0步骤
  10. 驱动程序和触摸屏的下载