D52 树的直径+贪心 CF911F Tree Destruction

news/2024/9/20 6:38:40

视频链接:

 

CF911F Tree Destruction - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// 两次DFS + 贪心 O(n)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;const int N=200005;
int head[N],idx;
struct edge{int to,ne;
}e[N<<1];
void add(int x,int y){e[++idx]={y,head[x]};head[x]=idx;
}
int n,p,l,r,d[N],fa[N],on[N];
long long ans;
vector<pair<int,int>>s;void dfs(int x,int f){fa[x]=f;if(d[x]>d[p]) p=x;for(int i=head[x];i;i=e[i].ne){int y=e[i].to;if(y==f) continue;d[y]=d[x]+1;dfs(y,x);}
}
void work(int x,int rt){for(int i=head[x];i;i=e[i].ne){int y=e[i].to;if(d[y]>d[x]) work(y,on[y]?y:rt);//若y在直径上,则取y//若y不在直径上,则取直径上的节点
  }if(!on[x]){ //若x不在直径上if(d[x]>d[x]+d[r]-d[rt]*2){ans+=d[x];s.push_back({l,x});}else{ans+=d[x]+d[r]-d[rt]*2;s.push_back({r,x});}}
}
int main(){scanf("%d",&n);for(int i=1,x,y;i<n;++i){scanf("%d%d",&x,&y);add(x,y); add(y,x);}dfs(1,0); l=p; d[p]=0;dfs(p,0); r=p;for(int i=r;i;i=fa[i]) on[i]=1;work(l,l);         //删外周for(;l!=r;r=fa[r]) //删直径ans+=d[r],s.push_back({l,r});printf("%lld\n",ans);for(auto i:s)printf("%d %d %d\n",i.first,i.second,i.second);
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

张量 矩阵乘法优化

张量 矩阵乘法优化 在SIMT架构下, 不使用TensorCore进行矩阵乘法,计算所需要的访存相关的优化。通过逐步迭代优化,深入理解GPU的性能特征和内存访问优化。 测试环境为一块A10 GPU, 驱动版本: 550.54.15, CUDA版本: 12.4 . 矩阵M=N=K=4092,见表6-5。 表6-5 cuBLAS调用,在每…

通用矩阵乘法执行

通用矩阵乘法执行 使用两个手工实现的纯粹GEMM和分块GEMM的例子来解释矩阵分块乘法的原理和性能影响, 可以看到性能差距接近53倍. 按照测试的A10 GPU峰值FP32算力31TFFLOPS来算, 最朴素的算法由于访存效率的问题, 浮点算力仅为峰值的1%。 # ./naive AveragePerformance 0.233…

交易柜台系统技术名词

目录交互示意图柜台API前置机行情和交易接口生产环境服务器托管(Co-location)什么是高频交易 (HFT)?交互示意图 程序化交易用户是如何与期货公司、交易所进行信息交互的?柜台 依据国内监管要求,客户无法直连交易所系统,中间必须经过期货公司(Broker)的系统,这便是柜台系…

全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类

在Python中,接口和抽象基类(Abstract Base Classes, ABCs)都用于定义类的结构和强制子类实现特定的方法,Python 没有内建的接口机制,但可以通过抽象基类(ABC)来模拟接口的行为。全网最适合入门的面向对象编程教程:50 Python 函数方法与接口-接口和抽象基类摘要: 在 Py…

javafx jlink 遇到的非模块化的依赖打包报错“模块异常”的问题和处理

javafx jlink 遇到的问题和处理 简介 javafx:jlink 是 javafx-maven-plugin 插件中的一个目标,用于创建一个自包含的 JavaFX 应用程序运行时映像。这个目标利用 Java 的 jlink 工具来生成一个包含应用程序及其所有依赖的定制化运行时映像,从而简化部署和分发。创建自包含运行…

The minimum required version for Powerlevel10k is 5.1

目录一、背景二、原因三、解决1、安装 ZSH 最新版本2、效果3、下载了还是显示 ZSH 版本为 5.0.2 怎么办 一、背景 安装 ZSH 主题 Powerlevel10k 时报错:You are using ZSH version 5.0.2. The minimum required version for Powerlevel10k is 5.1. Type echo $ZSH_VERSION to …

Python pycryptodome类库使用学习总结

AES数据加解密 以下代码生成一个新的AES-128密钥,并将一段数据加密到一个文件中。我们使用 CTR 模式(这是一种 经典操作模式, 简单但不再推荐)。 仅使用CTR,接收者无法检测到密文(即加密数据)在传输过程中是否被修改。为了应对这种风险,例中还附加了一个MAC身份验证标签…

电脑设置系统不自动更新

1、win + R 2、计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\StateVariables 3、右边空白处右击 -> 新建 -> DWORD值,命名为FlightSettingsMaxPauseDays,点击基数选择十进制,数值设置为9999(表示不更新的天数)