news 2026/3/25 15:58:07

小红的树上删边【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小红的树上删边【牛客tracker 每日一题】

小红的树上删边

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

小红拿到了一棵树,她希望删除一些边,使得每个连通块的大小是偶数。请你帮小红计算最多删除多少条边。

请python同学加上以下扩栈代码并使用python3提交,不要用pypy3!或者使用非递归做法。

sys.setrecursionlimit(200000)

输入描述:

第一行输入一个正整数n nn,代表树的节点数量。
接下来的n − 1 n−1n1行,每行输入2 22个正整数u , v u,vu,v,代表节点u uu和节点v vv有一条边连接。
1 ≤ n ≤ 10 5 1≤n≤10^51n105
1 ≤ u , v ≤ n 1≤u,v≤n1u,vn

输出描述:

如果无解,请输出− 1 -11
否则输出一个整数,代表可以删除的最多边数。

示例1

输入:

4 1 2 2 3 3 4

输出:

1

说明:

删除2 − 3 2-323这条边即可。

示例2

输入:

3 1 2 2 3

输出:

-1

解题思路

首先判断树的总节点数n是否为奇数,若是则无法分割为多个偶数大小的连通块,直接输出− 1 -11;若n nn为偶数,先构建树的邻接表,通过D F S DFSDFS从根节点1 11遍历整棵树,计算每个节点为根的子树大小s z [ i ] sz[i]sz[i](初始s z [ t ] = 1 sz[t]=1sz[t]=1,累加所有子节点的s z szsz值);随后遍历除根节点外的所有节点,统计其子树大小为偶数的数量,该数量即为可删除的最多边数(删除该节点与父节点的边后,子树成为独立的偶数大小连通块,且此统计方式能保证删边数最大化);该方法通过D F S DFSDFS高效计算子树大小,时间复杂度为O ( n ) O(n)O(n),适配n nn1 e 5 1e51e5的规模,先排除无解场景,再精准统计符合条件的边数,得到最多可删除的边数。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e5+10;constll M=1e6+10;ll h[N],e[M],ne[M],idx=0;ll sz[N];voidinit(ll n){for(ll i=1;i<=n;i++)h[i]=-1;}voidadd(ll a,ll b){e[idx]=b;ne[idx]=h[a];h[a]=idx++;}voiddfs1(ll t,ll r){sz[t]=1;for(ll i=h[t];i!=-1;i=ne[i]){ll x=e[i];if(x==r)continue;dfs1(x,t);sz[t]+=sz[x];}}intmain(){ll n;cin>>n;init(n);for(ll i=1;i<n;i++){ll a,b;cin>>a>>b;add(a,b);add(b,a);}if(n%2){cout<<-1<<endl;return0;}dfs1(1,0);ll ans=0;for(ll i=2;i<=n;i++){if(sz[i]%2==0)ans++;}cout<<ans<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 8:09:40

【接口测试】3_PyMySQL模块 _连接数据库

文章目录一、连接数据库二、入门案例三、小结一、连接数据库 conn pymysql.connect(host"", port0, user"", password"", database"", charset"")host&#xff1a;数据库主机ip地址 port&#xff1a;数据库使用的端口号 -…

作者头像 李华
网站建设 2026/3/23 11:15:35

Linux 网络编程 ——2025年度深度总结

Linux 网络编程 ——2025年度深度总结 引言&#xff1a;从通信的起点说起 网络编程&#xff0c;本质上是对"通信"这一人类基本行为在数字世界的映射。当我们拨通一个电话、发送一条消息、打开一个网页&#xff0c;背后都有一整套精密的机制在默默支撑——而 Linux 作…

作者头像 李华
网站建设 2026/3/14 6:58:54

在线教育防刷课机制:学习过程真实性验证

在线教育防刷课机制&#xff1a;学习过程真实性验证 在远程教学日益普及的今天&#xff0c;一个看似平静的学习界面背后&#xff0c;可能正上演着一场“人机对抗”——学生用自动化脚本挂机、多开虚拟机刷课、循环播放录屏视频&#xff0c;只为快速拿到学分。而平台方则不断升级…

作者头像 李华
网站建设 2026/3/25 11:50:03

电商运营数据分析的系统架构可适应性

运营数据分析的系统架构可适应性 关键词:运营数据分析、系统架构、可适应性、数据处理、业务变化 摘要:本文围绕运营数据分析的系统架构可适应性展开深入探讨。首先介绍了研究的背景、目的、预期读者和文档结构等内容。接着阐述了核心概念及其联系,通过文本示意图和 Mermaid…

作者头像 李华