http://codeforces.com/gy
https://hihocoder.com/login #include <bits/stdc++.h> using namespace std; struct node1 { int v; int next; }; struct node2 { int x; int y; int dis; }; map <string,in...
https://www.lydsy.com/JudgeOnline/problem.php?id=3124第一问求树的直径 第二问求有多少边被所有直径覆盖求第一问时把直径上的点存下来 枚举直径上的点 求一下不走直径上的点所能到达的最远距离 记为dis3 如果和直径的左端点距离相等 就把当前点到左端点的边都标记 这些边就是不符合条件的 和直径的右端点距离相等同样处理要求的边时被所有
http://codeforces.com/gym/100781/attachments给出一个森林 问将图连通后最小的树直径对于所有连通块都求出直径 若只有一个连通块则直接输出 有两个则比较一下最大直径以及最大最小折半相连后的直径 取个最小值 因为将两棵树连在一起肯定是连两者重心若多于两个 则用所有重心连一个星形图 为了让树的高度尽可能小 这时次大和次次大的直径的重心之间连边数为2 此处
http://codeforces.com/problemset/problem/337/D给一棵树 其中有m个点是重要点 一个点到这m给点的距离都小于等于d才算符合条件 问有多少点符合条件把这m个点想象成m个半径为d的圆 题目就是问有多少点被这m个半径相同的圆全部覆盖 可以想到要求m个点中相距最远的两个点 具体怎么求其实就是树的直径的变形了一个点要符合条件 肯定要满足最严苛的这两个点...
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号