图论day60|108.冗余连接(卡码网) 、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
图论day60|108.冗余连接(卡码网)、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
- 108.冗余连接(卡码网)
- 109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
108.冗余连接(卡码网)
题目描述
有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图(其实就是一个线形图),如图:

现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图:

先请你找出冗余边,删除后,使该图可以重新变成一棵树。
输入描述
第一行包含一个整数 N,表示图的节点个数和边的个数。
后续 N 行,每行包含两个整数 s 和 t,表示图中 s 和 t 之间有一条边。
输出描述
输出一条可以删除的边。如果有多个答案,请删除标准输入中最后出现的那条边。
输入示例
3
1 2
2 3
1 3
输出示例
1 3
提示信息

图中的 1 2,2 3,1 3 等三条边在删除后都能使原图变为一棵合法的树。但是 1 3 由于是标准输出里最后出现的那条边,所以输出结果为 1 3
数据范围:
1 <= N <= 1000.

#include <iostream>
#include <vector>
using namespace std;int n;
vector<int> father(1001,0);void init()
{for(int i=1;i<=n;i++)father[i]=i;
}int find(int u)
{return u==father[u]?u:father[u]=find(father[u]);
}bool isSame(int u,int v)
{u=find(u);v=find(v);return u==v;
}void join(int u,int v)
{u=find(u);v=find(v);if(u==v)return;elsefather[v]=u;
}int main()
{cin>>n;init();int s,t;for(int i=0;i<n;i++){cin>>s>>t;if(isSame(s,t)){cout<<s<<" "<<t<<endl;return 0;}elsejoin(s,t);}
}
109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
题目描述
有一种有向树,该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。有向树拥有 n 个节点和 n - 1 条边。如图:

现在有一个有向图,有向图是在有向树中的两个没有直接链接的节点中间添加一条有向边。如图:

输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。
输入描述
第一行输入一个整数 N,表示有向图中节点和边的个数。
后续 N 行,每行输入两个整数 s 和 t,代表这是 s 节点连接并指向 t 节点的单向边
输出描述
输出一条可以删除的边,若有多条边可以删除,请输出标准输入中最后出现的一条边。
输入示例
3
1 2
1 3
2 3
输出示例
2 3
提示信息

在删除 2 3 后有向图可以变为一棵合法的有向树,所以输出 2 3
数据范围:
1 <= N <= 1000.

#include <iostream>
#include <vector>
using namespace std;int n;
vector<int> father(1001,0);void init()
{for(int i=1;i<=n;i++)father[i]=i;
}int find(int u)
{return u==father[u]?u:father[u]=find(father[u]);
}bool isSame(int u,int v)
{u=find(u);v=find(v);return u==v;
}void join(int u,int v)
{u=find(u);v=find(v);if(u==v)return;elsefather[v]=u;
}bool deleteIsTree(vector<vector<int>> edges,int x)
{init();for(int i=0;i<n;i++){if(i==x) continue;if(isSame(edges[i][0],edges[i][1]))return false;elsejoin(edges[i][0],edges[i][1]);}return true;
}void removeEdge(vector<vector<int>> edges)
{init();for(int i=0;i<n;i++){if(isSame(edges[i][0],edges[i][1]))cout<<edges[i][0]<<" "<<edges[i][1]<<endl;elsejoin(edges[i][0],edges[i][1]);}
}int main()
{int s,t;cin>>n;vector<vector<int>> edges;vector<int> inDegree(n+1,0);vector<int> vec;for(int i=0;i<n;i++){cin>>s>>t;edges.push_back({s,t});inDegree[t]++;}for(int i=n-1;i>0;i--){if(inDegree[edges[i][1]]==2)vec.push_back(i);}if(vec.size()>0){if(deleteIsTree(edges,vec[0]))cout<<edges[vec[0]][0]<<" "<<edges[vec[0]][1]<<endl;elsecout<<edges[vec[1]][0]<<" "<<edges[vec[1]][1]<<endl;return 0;}removeEdge(edges);
}
相关文章:
图论day60|108.冗余连接(卡码网) 、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】
图论day60|108.冗余连接(卡码网)、109.冗余连接II(卡码网)【并查集 摧毁信心的一题,胆小的走开!】 108.冗余连接(卡码网)109.冗余连接II(卡码网)【并查集 摧毁…...
即使是编程新手,也能利用ChatGPT编写高质量的EA
在外汇交易领域,MetaTrader是一款备受欢迎的交易软件,包括MT5和MT4,提供了众多强大的分析工具和自动化交易功能。对于没有编程经验的新手而言,编写专家顾问(EA)可能显得既复杂又令人望而却步。幸运的是&…...
StarRocks大批量数据导入方案-使用 Routine Load 导入数据
本文详细介绍如何使用Routine Load 导入数据 一、准备工作 1.1 安装基础环境 主要是安装StarRocks和Kafka,本文直接跳过不做详细介绍~ 二、概念及原理 2.1 概念 导入作业(Load job) 导入作业会常驻运行,当导入作业的状态为 R…...
从零开始学PHP之输出语句变量常量
一、 输出方式 在 PHP 中输出方式: echo,print,print_r,var_dump 1、echo和print为php的输出语句 2、var_dump,print_r为php的输出函数 (这里不做介绍)echo 和 print 区别 1、echo - 可以输出…...
二叉树算法之字典树(Trie)详细解读
字典树(Trie,也称前缀树或单词查找树)是一种用于快速查找字符串的数据结构,主要应用于字符串集合的高效存储和查找。字典树特别适合处理具有相同前缀的大量字符串集合,比如单词自动补全、拼写检查等场景。 1. 字典树的…...
butterfly侧边栏音乐模块
方法1.美观但换页后没法播放 1.blog根目录/source文件夹下新建_data文件夹(如果没有_data文件夹) 2.在刚刚的_data文件夹里创建widget.yml文件 bottom:- class_name: user-musicid_name: user-musicname: 音乐icon: fas fa-heartbeatorder:html: <…...
【论文阅读】Detach and unite: A simple meta-transfer for few-shot learning
分离与联合:一种用于小样本学习的简单元迁移方法 引用:Zheng Y, Zhang X, Tian Z, et al. Detach and unite: A simple meta-transfer for few-shot learning[J]. Knowledge-Based Systems, 2023, 277: 110798. 论文地址:下载地址 论文代码&a…...
Java中的动态代理——介绍与使用示例
Java中的动态代理其实就是一种“代理”模式,在运行时帮我们创建一个“代理对象”,通过这个代理对象可以在不改变原本方法的情况下,做一些额外的事情,比如记录日志、检查权限等。这种代理机制非常灵活和实用,特别是在像…...
微信开发者工具:音乐小程序报错
报错信息 GET http://localhost:3000/1.mp3 net::ERR CONNECTION REFUSED (env: Windows,mp,1.06.2303220;lib:3.6.0) 原因:小程序没有直接获取本地文件,为了提高访问速度,而采用放到网络服务器中网络访问的方式获取文件内容 解决办法&#…...
P2-3与P2-4.【C语言基本数据类型、运算符和表达式】第三节与第四节
讲解视频: P2-3.【基本数据类型、运算符和表达式】第三节 P2-4.【基本数据类型、运算符和表达式】第四节 目录 必备知识与理论 任务实施 必备知识与理论 C语言中把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。 其运算符和表达式数量之多&a…...
Python | Leetcode Python题解之第492题构造矩形
题目: 题解: class Solution:def constructRectangle(self, area: int) -> List[int]:w int(sqrt(area))while area % w:w - 1return [area // w, w]...
新版vs code + Vue高亮、语法自动补全插件
vs code 版本或及以上 安装以下三个插件插件 Vetur Vue语法支持。包括语法高亮、语法代码提示、语法lint检测 ESLint语法纠错 Prettier 2.左下角设置 3.进行配置 配置内容: {"editor.fontSize": 20,"window.zoomLevel": 1,"workben…...
【优选算法】(第四十五篇)
目录 地图分析(medium) 题目解析 讲解算法原理 编写代码 课程表(medium) 题目解析 讲解算法原理 编写代码 地图分析(medium) 题目解析 1.题目链接:. - 力扣(LeetCode&#…...
自闭症儿童的康复与培养:揭秘有效方法
在生命的广阔画卷中,每一个孩子都是独一无二的色彩,他们带着各自的使命和梦想,踏上人生的旅程。然而,对于自闭症儿童而言,这段旅程似乎更加崎岖和艰难。幸运的是,星贝育园康复中心如同一盏明灯,…...
rom定制系列------小米8澎湃os1.0.28安卓13客户定制固件 刷写以及界面预览
💝💝💝 小米8后置指纹版,机型代码dipper, 官方最终版为12.5.2安卓10的版本。对于一些工作室不太适用。客户需要应用在安卓13的固件。根据客户提供的固件将卡刷改为线刷。并且修改其中客户需求。去除不需要的内置应用以…...
【CTF-SHOW】Web入门 Web14 【editor泄露-详】【var/www/html目录-详】
editor泄露问题通常出现在涉及文件编辑器或脚本编辑器的题目中,尤其是在Web安全或Pwn(系统漏洞挖掘)类别中。editor泄露的本质是由于系统未能妥善处理临时文件、编辑历史或进程信息,导致攻击者可以通过某种途径获取正在编辑的敏感…...
Chrome谷歌浏览器禁止空格下翻页但可以暂停和播放视频脚本js
前提 播放某些网站的视频的时候(不能网页全屏的视频) 会产生空格下翻页但是不能暂停播放视频,解决方案:下载油猴或者脚本猫把这代码填进去 (function() {use strict;document.body.onkeydown function(event) {var e window.event || event;// 检查是否按下空格…...
【笔记】【YOLOv10图像识别】自动识别图片、视频、摄像头、电脑桌面中的花朵学习踩坑
(一)启动 创建环境python3.9 打开此环境终端 (后面的语句操作几乎都在这个终端执行) 输入up主提供的语句:pip install -r requirements.txt 1.下载pytorch网络连接超时 pytorch网址: Start Locally | P…...
H-TCP 的效率和公平性
昨晚带安孩楼下玩耍,用手机 desmos 作了一组 response curve 置于双对数坐标系: 长肥管道的优化思路都很类似,cwnd 增长快一点: BIC TCP:二分查找逼近 capacity;CUBIC TCP:上凸曲线逼近 capa…...
集群与分布式
Cluster(集群)概述 当单独一台主机无法承载现有的用户请求量;或者一台主机因为单一故障导致业务中断的时候,就可以增加服务主机数,这些主机在一起提供服务,就叫集群,而用户所看到的依然是单个的主机,用户并…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
