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

网站首页的动态视频怎么做的做网站挂谷歌广告赚钱吗

网站首页的动态视频怎么做的,做网站挂谷歌广告赚钱吗,小程序开发价格及清单,免费ppt模板下载医院D. A Wide, Wide Graph 题目: 思路: 考察树的直径的性质以及逆向思维 这一题要是正向思考可能会有些难,我们不如反向思考看看 树上的最长路线是树的直径,也就是说如果 k 大于了直径 d,那么所有点都将是一个联通块&a…

D. A Wide, Wide Graph

题目:

思路:

考察树的直径的性质以及逆向思维

这一题要是正向思考可能会有些难,我们不如反向思考看看

树上的最长路线是树的直径,也就是说如果 k 大于了直径 d,那么所有点都将是一个联通块,否则肯定会有点连接起来

如果我们知道树的直径的性质那么这题就迎刃而解了

对于树的直径的两个端点 u,v,树上任意一点 z 的最长路径其终点一定在 u 或者 v 上

那么只要知道了这个,我们就好做了,既然要满足两点间的距离大于等于 k,那么肯定是取最大值看,由于最大值一定会连接到直径两端任意一个,那么只要 z 对于 u,v 两点的距离大于等于 k,那么就会和 u,v 一起变成一个连通块,并且最后的形态肯定是 一个连通块 和 x 个单点

为什么呢?感性的想,既然 z 到 u,v 的距离最大,那么肯定是先连 u,v,如果有别的节点 y,那么肯定会一起到 u,v 中,即不可能存在先连接 y 再连接 u,v 的情况

所以我们可以用三次dfs来解决这题,前两次求直径的两个端点,同时求每个节点到端点 1 的距离,第三次我们求所有点到端点 2 的距离,最后模拟即可

代码:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "Yes\n"
#define no cout << "No\n"void solve()
{int n;cin >> n;vector<vector<int>> g(n + 1);for (int i = 0; i < n-1; i++){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}vector<int> dep(n + 1, 0),dep2(n+1,0),dep3(n+1,0);int root1 = 0, root2 = 0;auto dfs1 = [&](auto self, int fa, int se) ->void {dep[se] = dep[fa] + 1;for (auto& son : g[se]){if (son == fa) continue;self(self, se, son);}if (dep[se] > dep[root1]){root1 = se;}};dfs1(dfs1, 1, 1);auto dfs2 = [&](auto self, int fa, int se) ->void {dep2[se] = dep2[fa] + 1;for (auto& son : g[se]){if (son == fa) continue;self(self, se, son);}if (dep2[se] > dep2[root2]){root2 = se;}};dfs2(dfs2, root1, root1);auto dfs3 = [&](auto self, int fa, int se) ->void {dep3[se] = dep3[fa] + 1;for (auto& son : g[se]){if (son == fa) continue;self(self, se, son);}};dfs3(dfs3, root2, root2);vector<int> dis(n + 1, -1e9);for (int i = 1; i <= n; i++){dis[i] = max(dep2[i], dep3[i]) - 1;}sort(dis.begin(), dis.end());vector<int> ans;int index = n;int nowans = n;int k = n;int flag = 0;while (k>0){while (index > 0 && dis[index] >= k){index--;nowans--;flag = 1;}ans.push_back(nowans+ flag);k--;}for (int i = n-1; i >= 0; i--){cout << ans[i] << " ";}cout << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;while (t--){solve();}return 0;
}

http://www.yayakq.cn/news/899729/

相关文章:

  • 怎么做国内网站东营网站建设
  • 有帮忙做儿童房设计的网站吗郑州港区建设投资公司网站
  • 专业企业网站搭建服务火车头获取不到wordpress列表
  • 买个人家的网站绑定自己的域名视频网站外链怎么做
  • 网站开发两端对齐底行左对齐管理学试题库及答案
  • 网站备案 公司企业网盘解决方案
  • 建设知道购物网站杭州做网站公司有哪些
  • 贵州华瑞网站建设有限公司云校招企业服务平台
  • 网站搜索引擎拓客孝感网站开发
  • 常州专业网站建设怎样在内网建设一个网站
  • 网站设计价格大概是中国十大品牌策划公司
  • 网站栏目英文网站推广效果怎么样
  • 做网站电脑开一天用多少钱黑五手表网站
  • 网站建设的方案书建设中的网站备案期间做什
  • 免费视频网站推荐做类似淘宝一样的网站
  • wordpress访问报错seo关键词排名怎么提升
  • 驻马店住房和城乡建设厅网站wordpress 进后台白屏
  • 一级a做网站免费百度网络优化推广公司
  • 如何降低网站相似度wordpress实现积分
  • 防止网站被采集云校网站建设
  • 做娱乐网站网站哪些数据
  • 建设一个自己的网站商标查询官网
  • 广告公司网站模版兰亭集势的网站平台建设
  • 智慧物流企业网站建设方案网站优化外包
  • 电话约建设网站 客户昆明网络营销公司哪家比较好
  • 设计说明怎么写范文网站seo哪里做的好
  • 网站建设方案标准模板wordpress 使用方法
  • 网站服务器查询平台wordpress4.9 环境
  • 时尚女装网站设计网站做app开发
  • 会展网站的建设情况制作网站的图片素材