CF 1805 D. A Wide, Wide Graph (*1800) 思维 + 树的直径

news/2024/12/22 0:08:54/文章来源:https://www.cnblogs.com/showball/p/18448187

CF 1805 D. A Wide, Wide Graph (*1800) 思维 + 树的直径

题目链接

题意

思路

若当前点到最远的点的距离 \(< k\) , 说明 \(x\) 自己成为一个联通块。

并且我们知道距离任意一点最远的点一定是树直径的一个端点。

反之,则与直径端点在同一个联通块。

所以一个点要么独立成为联通块,要么和直径端点在一个联通块。

\(dfs\) 求出直径两个端点,并且维护每个点到端点的距离即可。

代码

#include<bits/stdc++.h>using namespace std;using i64=long long;void Showball(){int n;cin>>n;vector<vector<int>> e(n);for(int i=1;i<n;i++){int u,v;cin>>u>>v;u--;v--;e[u].push_back(v);e[v].push_back(u);}vector<int> st(n),dis(n);function<void(int)> dfs=[&](int u){for(auto v:e[u]){if(st[v]) continue;st[v]=true;dis[v]=dis[u]+1;dfs(v);}};st[0]=1;dfs(0);int maxn=0,S,E;for(int i=0;i<n;i++){if(dis[i]>maxn){maxn=dis[i];S=i;}dis[i]=st[i]=0;}st[S]=1;dfs(S);auto dis2=dis;maxn=0;for(int i=0;i<n;i++){if(dis[i]>maxn){maxn=dis[i];E=i;}dis[i]=st[i]=0;}st[E]=1;dfs(E);vector<int> ans(n+1);for(int i=0;i<n;i++){if(i!=E) ans[max(dis[i],dis2[i])+1]++;}ans[0]=1;for(int i=1;i<=n;i++) ans[i]+=ans[i-1];for(int i=1;i<=n;i++) cout<<ans[i]<<" \n"[i==n];
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t=1;//cin>>t;while(t--){Showball();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808579.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows应急响应-Auto病毒

Windows—Auto病毒应急思路分享。目录应急背景分析样本开启监控感染病毒查看监控分析病毒行为autorun.inf分析2.异常连接3.进程排查4.启动项排查查杀1.先删掉autorun.inf文件2.使用xuetr杀掉进程3.启动项删除重启排查入侵排查正常流程 应急背景 运维人员准备通过windows共享文档…

帝国cms后台admin帐号密码忘记的处理方法

5.1 至 7.0 版本登录 phpMyAdmin访问 http://yourdomain.com/phpmyadmin。 输入数据库用户名和密码登录。选择帝国CMS 安装所在的数据库在 phpMyAdmin 主界面中,找到并选择帝国CMS 使用的数据库。找到 phome_enewsuser 表在数据库中找到名为 phome_enewsuser 的表。 单击该表以…

[OI] 树链剖分

学的时候比较朦胧,现在不朦胧了,所以写一下 讲解 重儿子:一个节点的子树大小最大的儿子 轻儿子:非重儿子 重链:节点 -> 重儿子 -> 重儿子 .. 这样的链A beautiful Tree蓝线为重链可以发现,树上的所有节点一定属于且仅属于一个重链 首先要知道如何找重链 这很简单,…

忘记帝国cms网站后台登录密码和认证码如何找回

1. 准备重置脚本下载附件:下载提供的重置脚本文件。 将文件上传到网站根目录。2. 访问重置页面访问重置页面:访问 /e/update/resetuser.php。 默认密码为 123456,也可以在 resetuser.php 中修改这个密码。3. 重置密码输入密码:输入默认密码 123456。 跳转到重置密码页面。 …

Golang安全开发第一节

Golang安全开发 一、安装Go&编译器基础使用 1. 安装包地址 https://golang.google.cn 2. 添加环境变量 windows 直接点击msi安装即可 Linux tar -zxvf xxx.xxx.xxx.tar.gz mv -r go /use/local/go vim /etc/profile export PATH=$PATH:/usr/local/go/bin source /etc/profi…

帝国CMS重置后台登录密码方法,帝国CMS后台登录密码忘记的解决方法。

适用版本帝国CMS 7.2 及 7.5 版本操作步骤登录服务器登录到您的服务器,确保您有访问数据库的权限。找到帝国CMS数据库使用 phpMyAdmin 或其他数据库管理工具登录到您的数据库。打开 phome_enewsuser 数据表在数据库中找到 phome_enewsuser 表(phome 为默认表前缀,请根据实际…

如何恢复遗忘的帝国CMS管理员密码?

方法一:通过phpMyAdmin重置密码 适用版本:帝国CMS 5.0及以下版本操作步骤:登录phpMyAdmin:访问您的服务器上的phpMyAdmin界面,通常地址为 http://yourdomain.com/phpmyadmin。 输入数据库用户名和密码登录。选择正确的数据库:在phpMyAdmin主界面中,找到并选择帝国CMS使用…

忘记帝国CMS后台密码,重置帝国CMS后台密码

1. 忘记后台管理员账号怎么办?解决步骤:使用 phpMyAdmin 查看数据库中的 phome_enewsuser 表。 在 username 字段中查找您的管理员用户名。2. 忘记后台登录密码怎么办? 帝国CMS 5.0 及以下版本解决步骤:通过 phpMyAdmin 访问数据库中的 phome_enewsuser 表。 将 password 字…

帝国管理系统忘记后台账号和密码怎么办?

如果你忘记了帝国网站管理系统的后台账号和密码,可以通过以下几种方法来解决这个问题: 方法 1: 通过数据库重置密码登录数据库使用 phpMyAdmin 或 MySQL 命令行工具登录到数据库。查找管理员用户表查找管理员用户的表,通常为 ecms_admin 或 ecms_user。更新密码更新管理员用…

帝国如何解决帝国CMS管理员忘记密码的问题

创建临时脚本创建一个临时 PHP 脚本来重置密码。例如,在 e 目录下创建一个 reset_password.php 文件:php<?php require_once(./class/connect.php); require_once(./class/config.php); require_once(./class/function.php);$admin_id = 1; // 管理员 ID $new_password =…

帝国CMS管理员密码忘记的解决方法

如果你忘记了帝国CMS的后台登录账号和密码,可以通过以下几种方法来解决这个问题: 方法 1: 重置管理员密码(通过数据库)登录数据库使用 phpMyAdmin 或 MySQL 命令行工具登录到数据库。查找管理员用户表查找管理员用户的表,通常为 ecms_admin 或 ecms_user。更新密码更新管理…

帝国cms忘记登陆账号密码怎么办

如果你忘记了帝国CMS的后台登录账号和密码,可以通过以下几种方法来解决这个问题: 方法 1: 重置管理员密码(通过数据库)登录数据库使用 phpMyAdmin 或 MySQL 命令行工具登录到数据库。查找管理员用户表查找管理员用户的表,通常为 ecms_admin 或 ecms_user。更新密码更新管理…