【树上操作】定长裁剪 CF1833 G

news2024/11/26 23:39:43

Problem - G - Codeforces

题意:

给定一棵n个节点的树,请你减掉一些边,使得剪掉后的每个树只有三个节点,
如果可以,第一行返回减掉边的数量,第二行返回减掉边的编号;如果无解,输出-1

思路:

首先去观察样例:

 可以发现我们可以从叶子结点递归裁剪

Code:

#include <bits/stdc++.h>

#define int long long

using namespace std;

const int mxn=2e5+10;
const int mxe=2e5+10;

struct ty{
	int to,next;
}edge[mxe<<2];

vector<int> ans;

map<pair<int,int>,int> G; 

int N,u,v;
int tot=0;
int head[mxn];

void add(int u,int v){
	edge[tot].to=v;
	edge[tot].next=head[u];
	head[u]=tot++;
}
void G_init(){
	tot=0;
	G.clear();
	ans.clear(); 
	for(int i=0;i<=N;i++){
		head[i]=-1;
	} 
}
int dfs(int u,int fa){
	int cnt=1;
	for(int i=head[u];~i;i=edge[i].next){
		if(edge[i].to==fa) continue;
		cnt+=dfs(edge[i].to,u);
	}
	if(cnt==3){
		ans.push_back(G[{u,fa}]);
		return 0;
	}
	return cnt;
}
void solve(){
	cin>>N;
	G_init();
	for(int i=1;i<=N-1;i++){
		cin>>u>>v;
		add(u,v);
		add(v,u);
		G[{u,v}]=G[{v,u}]=i;
	}
	if(N%3!=0){
		cout<<-1<<'\n';
		return;
	}
	int x=dfs(1,0);
	if(ans.size()!=N/3){
		cout<<-1<<'\n';
		return;
	}
	cout<<N/3-1<<'\n';
	for(int i=0;i<ans.size()-1;i++) cout<<ans[i]<<" \n"[i==ans.size()-2];
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0; 
}

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

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

相关文章

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

springcloudAlibaba之nacos集群部署和nginx负载均衡

1.环境准备 nacos server安装包&#xff1a;https://github.com/alibaba/nacos nginx安装包&#xff1a;https://nginx.org/en/download.html 2、nacos配置 将下载好的nacos-server的压缩包解压好以后&#xff0c;复制出N份&#xff08;这里取决于你集群的数量&#xff09;&…

AC自动机(java)

AC自动机 AC自动机介绍代码演示 indexTree AC自动机介绍 AC自动机算法是一种基于Trie树和有限状态机的字符串匹配算法。它在查找字符串时&#xff0c;利用额外的失配指针进行回退&#xff0c;转向其他分支&#xff0c;避免重复匹配前缀&#xff0c;从而提高算法效率。当一个字典…

编译内联导致内存泄漏的问题定位修复

作者&#xff1a;0x264 问题 线上长时间存在一个跟异步 inflate 相关的量级较大的内存泄漏&#xff0c;如下所示&#xff1a; 第一次分析 从内存泄漏粗略看有几个信息&#xff1a; 被泄漏的Activity有很多&#xff0c;所以可能跟某个具体业务的关系不大引用链特别短&#xf…

SkyWalking链路追踪中span全解

基本概念 在SkyWalking链路追踪中&#xff0c;Span&#xff08;跨度&#xff09;是Trace&#xff08;追踪&#xff09;的组成部分之一。Span代表一次调用或操作的单个组件&#xff0c;可以是一个方法调用、一个HTTP请求或者其他类型的操作。 每个Span都包含了一些关键的信息&am…

yaml语法详解

#kv #对空格的严格要求十分高 #注入到我们的配置类中 #普通的keyvalue name: qinjiang#对象 student:name: qingjiangage: 3#行内写法 student1: {name: qinjiang,age: 3}#数组 pets:- cat- dog- pigpet: [cat,dog,pig]yaml可以给实体类赋值 person:name: kuangshenage: 19happ…

css——box-sizing属性

含义 盒子模型由四部分构成&#xff0c;外边距(margin), 边框(border),内边距(padding), 内容content box-sizing 就是指定盒子的大小和结构的。 box-sizing: content-box; //默认值 内容真正宽度 设置的宽度box-sizing: border-box; // 内容真正宽度width 设置的width- 左右p…

LabVIEW可重入VI,VI模板和动态VI之间的差异

LabVIEW可重入VI&#xff0c;VI模板和动态VI之间的差异 应该在何时使用可重入VI、模板VI和动态调用VI&#xff1f;这三种类型之间有什么区别&#xff1f; 可重入VI 当想要同时运行同一VI的多个实例时&#xff0c;将使用可重入VI。当VI不可重入时&#xff0c;VI只有一个数据空…

浏览器对跨域请求携带Cookie的方法

文章目录 一、前后端协商配置1.1 前端页面搭建1.2后端服务器搭建 二、配置允许跨域浏览器三、Chrome浏览器安装ModHeader插件 企业开发时会分开发环境、测试环境以及生产环境&#xff0c;但是有的企业开发只有真正发布到线上的生产环境的流程才会严格配置&#xff0c;有的项目开…

C++线性技巧,STL

例题1&#xff1a;字串计算 样例输入 10101 样例输出 0 2 01 2 1 3 10 2 101 2 直接上代码&#xff1a; #include<iostream> #include<string> #include<map> using namespace std; map<string,int>mp;//用map存储每一个子串出现的次数 string str…

漏洞复现-yapi远程执行命令漏洞复现

目录 漏洞原理漏洞发现漏洞描述影响范围 yapi学习漏洞复现环境搭建exp 入侵检测与防御参考 漏洞原理 漏洞发现 查看issue2229 漏洞描述 网站开放注册功能时可随意注册&#xff0c;设置全局mock脚本可执行任意代码。 影响范围 Yapi < 1.9.2 yapi学习 YApi 是高效、易…

Docker(四)

文章目录 1. docker其他命令补充2. docker-registry使用3. docker-hub的使用4. 企业级私有仓库harbor4.1 harbor安装4.2 harbor配置https4.3 harbor常见使用4.3.1 harbor新建项目仓库4.3.2 harbor创建用户4.3.3 harbor仓库管理4.3.4 harbor复制管理4.3.5 harbor删除镜像 5. doc…

【JavaEE】Spring中注解的方式去获取Bean对象

【JavaEE】Spring的开发要点总结&#xff08;3&#xff09; 文章目录 【JavaEE】Spring的开发要点总结&#xff08;3&#xff09;1. 属性注入1.1 Autowired注解1.2 依赖查找 VS 依赖注入1.3 配合Qualifier 筛选Bean对象1.4 属性注入的优缺点 2. Setter注入2.1 Autowired注解2.2…

【漏洞复现】​金蝶云星空管理中心反序列化命令执行漏洞(RCE)

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、整改意见 前言 ​金蝶云星空管理中心存在反序列化命令执行,攻击者可通过该漏洞获取敏感信息&#xff0c;进而接管服务器。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文…

Mybatis-plus 配置自定义sql(.xml文件)查询语句的步骤

这是使用Mybatis-plus 的自动生成实体类代码生成.xml文件&#xff0c; 所以他会在java目录下&#xff0c;不在resources目录下 如果在java目录下的xml文件&#xff0c;需要分别配置application.yml和pom.xml文件 application.yml 文件进行以下配置&#xff1a; mybatis-plus…

视频增强技术-对比度增强

在图像处理中&#xff0c;由于获取的图像质量不好&#xff0c;需要通过对比度增强来提升图片质量&#xff0c;主要解决的是由于图像灰度级范围较小造成的对比度较低的问题&#xff0c;作用是使图像的灰度级范围放大&#xff0c;从而让图像更加清晰。主要对比度增强方法包括线性…

CentOS 7.9 安装 mydumper(RPM方式)

链接&#xff1a;https://pan.baidu.com/s/1sGhtiKPOmJw1xj0zv-djkA?pwdtaoz 码&#xff1a;taoz 开始正文啦&#xff1a; rpm -ivh mydumper-0.14.5-3-zstd.el7.x86_64.rpm 问题如下&#xff1a; 解决&#xff1a; yum -y install epel-release yum install -y libzstd …

分布式消息流处理平台kafka(一)-kafka单机、集群环境搭建流程及使用入门

1.kafka概述 1.1 kafka的前世今生 kafka最初是LinkedIn的一个内部基础设施系统。最初开发的起因是&#xff0c;LinkedIn虽然有了数据库和其他系统可以用来存储数据&#xff0c;但是缺乏一个可以帮助处理持续数据流的组件。 所以在设计理念上&#xff0c;开发者不想只是开发一…

通过 EXPLAIN 分析 SQL 的执行计划

通过 EXPLAIN 分析 SQL 的执行计划 EXPLAIN SELECTleave_station_area_id,ROUND( ( SUM( station_dist ) / 1000 ) / ( SUM( station_travel_time ) / 60 ), 2 ) evnPeakAvgSpeedFROMV3_SHIFT_ANALYSISWHERESTAT_DATE DATE_SUB( CURRENT_DATE, INTERVAL 1 DAY )AND LEAVE_STA…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 20 日论文合集)

文章目录 一、分割|语义相关(11篇)1.1 Two Approaches to Supervised Image Segmentation1.2 Boundary-Refined Prototype Generation: A General End-to-End Paradigm for Semi-Supervised Semantic Segmentation1.3 Source-Free Domain Adaptive Fundus Image Segmentation w…