当前位置: 首页 > article >正文

代码随想录算法营第五十四天|108. 多余的边、109. 多余的边II

KamaCoder 108. 多余的边#include iostream #include vector using namespace std; int n; vectorint father(1001, 0); int find(int u){ if (u father[u]) return u; else father[u] find(father[u]); return father[u]; } void join(int u, int v){ u find(u); v find(v); if (u v) return; father[v] u; } bool isSame(int u, int v){ u find(u); v find(v); return u v; } void init(){ for (int i 1; i n; i){ father[i] i; } } int main(){ int s, t; cin n; init(); while (n--){ cin s t; if (isSame(s, t)){ cout s t endl; }else join(s, t); } return 0; }KamaCoder 109. 多余的边II#include iostream #include vector using namespace std; int n; vectorint 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]); } // 将v-u 这条边加入并查集 void join(int u, int v) { u find(u); v find(v); if (u v) return ; father[v] u; } // 判断 u 和 v是否找到同一个根 bool same(int u, int v) { u find(u); v find(v); return u v; } // 在有向图里找到删除的那条边使其变成树 void getRemoveEdge(const vectorvectorint edges) { init(); // 初始化并查集 for (int i 0; i n; i) { // 遍历所有的边 if (same(edges[i][0], edges[i][1])) { // 构成有向环了就是要删除的边 cout edges[i][0] edges[i][1]; return; } else { join(edges[i][0], edges[i][1]); } } } // 删一条边之后判断是不是树 bool isTreeAfterRemoveEdge(const vectorvectorint edges, int deleteEdge) { init(); // 初始化并查集 for (int i 0; i n; i) { if (i deleteEdge) continue; if (same(edges[i][0], edges[i][1])) { // 构成有向环了一定不是树 return false; } join(edges[i][0], edges[i][1]); } return true; } int main() { int s, t; vectorvectorint edges; cin n; vectorint inDegree(n 1, 0); // 记录节点入度 for (int i 0; i n; i) { cin s t; inDegree[t]; edges.push_back({s, t}); } vectorint vec; // 记录入度为2的边如果有的话就两条边 // 找入度为2的节点所对应的边注意要倒序因为优先删除最后出现的一条边 for (int i n - 1; i 0; i--) { if (inDegree[edges[i][1]] 2) { vec.push_back(i); } } // 情况一、情况二 if (vec.size() 0) { // 放在vec里的边已经按照倒叙放的所以这里就优先删vec[0]这条边 if (isTreeAfterRemoveEdge(edges, vec[0])) { cout edges[vec[0]][0] edges[vec[0]][1]; } else { cout edges[vec[1]][0] edges[vec[1]][1]; } return 0; } // 处理情况三 // 明确没有入度为2的情况那么一定有有向环找到构成环的边返回就可以了 getRemoveEdge(edges); }

相关文章:

代码随想录算法营第五十四天|108. 多余的边、109. 多余的边II

KamaCoder 108. 多余的边 #include <iostream> #include <vector>using namespace std;int n; vector<int> father(1001, 0);int find(int u){if (u father[u]) return u;else father[u] find(father[u]);return father[u]; }void join(int u, int v){u …...

DLSSTweaks:自定义DLSS参数的开源优化工具

DLSSTweaks&#xff1a;自定义DLSS参数的开源优化工具 【免费下载链接】DLSSTweaks Tweak DLL for NVIDIA DLSS, allows forcing DLAA on DLSS-supported titles, tweaking scaling ratios & DLSS 3.1 presets, and overriding DLSS versions without overwriting game fil…...

微信小程序文件预览终极指南:从wx.openDocument到完美兼容iOS/Android

微信小程序跨平台文件预览实战&#xff1a;解决iOS/Android兼容性问题 在开发微信小程序时&#xff0c;文件预览功能是许多业务场景中的刚需。无论是查看合同文档、浏览报表还是阅读电子书&#xff0c;流畅的文件预览体验都直接影响用户满意度。然而&#xff0c;当开发者尝试使…...

MedGemma Medical Vision Lab教学应用:医学院《医学人工智能导论》实验课设计

MedGemma Medical Vision Lab教学应用&#xff1a;医学院《医学人工智能导论》实验课设计 1. 课程背景与教学目标 医学人工智能正在深刻改变医疗行业的未来&#xff0c;而医学影像分析是AI在医疗领域最具潜力的应用方向之一。为了让医学院学生直观理解多模态AI在医学影像中的…...

关于linux系统的密码破解和修改

1.打开虚拟机进入到该界面&#xff0c;在第一排橙色双条处&#xff0c;选择重新启动客户机 2.进入到该界面后立马点按上下左右键&#xff0c;防止进入到登录界面3.使用上下键,使得白条处于中间的位置&#xff0c;按击e键进入到该界面4.进入到该界面后&#xff0c;在rhgb quiet后…...

赋能开放科学:Zenodo平台如何革新科研数据管理生态

赋能开放科学&#xff1a;Zenodo平台如何革新科研数据管理生态 【免费下载链接】zenodo Research. Shared. 项目地址: https://gitcode.com/gh_mirrors/ze/zenodo 价值定位&#xff1a;科研数据为何需要专属的"数字档案馆"&#xff1f; 在开放科学运动蓬勃发…...

在保定婚介所的格子间里寻找灵魂,我曾以为代码能算尽缘分,直到遇见那场不期而至的免费告白

我叫周子昂&#xff0c;是一名在保定写了十年代码的后端工程师。在保定这座生活节奏不快不慢的城市里&#xff0c;我习惯了裕华路的早高峰&#xff0c;也习惯了深夜从竞秀区科技园下班时&#xff0c;路灯拉出的斜长倒影。三十二岁那年&#xff0c;我发现生活进入了一个死循环&a…...

阿里CosyVoice语音克隆实测:3秒音频克隆你的声音,效果惊艳

阿里CosyVoice语音克隆实测&#xff1a;3秒音频克隆你的声音&#xff0c;效果惊艳 最近在帮一个做有声书的朋友找语音合成方案&#xff0c;他需要为不同角色快速生成不同音色的旁白。试过几个在线平台&#xff0c;要么音色库固定不够用&#xff0c;要么定制声音的价格高得离谱…...

CosyVoice在AI社区的应用:为CSDN技术博客添加“听文章”功能

CosyVoice在AI社区的应用&#xff1a;为CSDN技术博客添加“听文章”功能 你有没有过这样的经历&#xff1f;眼睛盯着屏幕看一篇技术文章&#xff0c;密密麻麻的代码和公式&#xff0c;看久了眼睛发酸&#xff0c;注意力也开始涣散。或者&#xff0c;你正在通勤路上&#xff0c…...

造相-Z-Image-Turbo亚洲美女LoRA实战:10分钟搭建个人AI绘图工作台

造相-Z-Image-Turbo亚洲美女LoRA实战&#xff1a;10分钟搭建个人AI绘图工作台 想不想拥有一个专属的AI绘图助手&#xff0c;能根据你的文字描述&#xff0c;快速生成风格统一、细节精美的亚洲美女图片&#xff1f;今天&#xff0c;我就带你从零开始&#xff0c;用10分钟时间&a…...

小白友好!Hunyuan-MT-7B快速部署教程:无需代码基础,轻松搭建

小白友好&#xff01;Hunyuan-MT-7B快速部署教程&#xff1a;无需代码基础&#xff0c;轻松搭建 你是不是也遇到过这样的烦恼&#xff1f;看到一篇精彩的英文技术文章&#xff0c;想分享给团队&#xff0c;却苦于翻译质量参差不齐&#xff0c;要么生硬别扭&#xff0c;要么丢失…...

突破8大平台壁垒:Online-disk-direct-link-download-assistant的高效下载解决方案

突破8大平台壁垒&#xff1a;Online-disk-direct-link-download-assistant的高效下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自…...

OCR镜像功能体验:内置图像预处理,提升文字识别准确率

OCR镜像功能体验&#xff1a;内置图像预处理&#xff0c;提升文字识别准确率 1. 引言&#xff1a;当模糊图片遇上智能OCR 你有没有遇到过这样的场景&#xff1f;拍了一张重要的文档照片&#xff0c;结果因为光线不好或者手机对焦不准&#xff0c;图片有点模糊。当你兴冲冲地把…...

快速上手SenseVoice-Small:从环境配置到API调用的完整教程

快速上手SenseVoice-Small&#xff1a;从环境配置到API调用的完整教程 1. 引言&#xff1a;为什么选择SenseVoice-Small 语音识别技术正在成为现代应用开发的重要组件。SenseVoice-Small作为一款轻量级的多语言语音识别模型&#xff0c;凭借其高效的推理速度和广泛的语种支持…...

Dify混合检索失效真相(源码级Debug实录+召回链路时序图):为什么你的reranker永远不生效?

第一章&#xff1a;Dify混合检索失效真相的全局认知Dify 的混合检索&#xff08;Hybrid Retrieval&#xff09;机制融合了关键词匹配&#xff08;BM25&#xff09;与向量相似度&#xff08;Embedding Cosine Similarity&#xff09;&#xff0c;旨在兼顾语义准确性与关键词召回…...

网盘资源加速与链路优化:直链解析技术全指南

网盘资源加速与链路优化&#xff1a;直链解析技术全指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&#xff0c;无…...

ESP32-S3嵌入式多媒体监控系统设计与实现

1. 项目概述ESP32多媒体远程监控系统是一个面向嵌入式视觉与音视频交互场景的多功能终端设备&#xff0c;以ESP32-S3-WROOM-1芯片为核心控制器&#xff0c;集成LCD触摸屏人机交互、SD卡本地存储、Wi-Fi网络接入、蓝牙控制、HTTP服务发布及环境信息获取等能力。该系统并非单一功…...

无MCU快充移动电源改造为露营灯充电宝

1. 项目概述 IP5356-188-BZ 是一款高度集成的多协议快充移动电源管理 SoC&#xff0c;内置同步升降压控制器、电量计量单元、LED 驱动电路及 USB 协议识别模块。本项目基于该芯片的硬件特性&#xff0c;将标准双节锂电移动电源改造为兼具高功率快充能力与实用照明功能的露营灯充…...

RVC WebUI自定义配置:修改默认端口/启用HTTPS/设置密码

RVC WebUI自定义配置&#xff1a;修改默认端口/启用HTTPS/设置密码 1. 为什么需要自定义配置&#xff1f; 当你第一次打开RVC WebUI&#xff0c;看到那个熟悉的界面&#xff0c;是不是觉得一切都很完美&#xff1f;但用久了&#xff0c;你可能会遇到一些小麻烦。 比如&#…...

CCMusic音频分析惊艳案例:仅凭10秒片段识别出冷门印度拉格(Raga)风格

CCMusic音频分析惊艳案例&#xff1a;仅凭10秒片段识别出冷门印度拉格&#xff08;Raga&#xff09;风格 获取更多AI镜像 想探索更多AI镜像和应用场景&#xff1f;访问 CSDN星图镜像广场&#xff0c;提供丰富的预置镜像&#xff0c;覆盖大模型推理、图像生成、视频生成、模型微…...

实测Open-AutoGLM:用自然语言让AI自动刷抖音、关注博主

实测Open-AutoGLM&#xff1a;用自然语言让AI自动刷抖音、关注博主 1. 引言&#xff1a;解放双手的AI手机助手 想象一下这样的场景&#xff1a;你正在做饭&#xff0c;手上沾满面粉&#xff0c;突然想起要关注一个抖音美食博主。传统方式你需要洗手、解锁手机、打开应用、搜索…...

开源吐槽大会:推动项目改进的利器

开源项目吐槽大会技术文章大纲开源项目吐槽大会的意义促进开源社区透明化&#xff0c;推动项目改进提供开发者真实反馈&#xff0c;减少闭门造车增强社区凝聚力&#xff0c;鼓励良性讨论常见的开源项目槽点文档不完善或过时代码结构混乱&#xff0c;维护困难响应速度慢&#xf…...

Notepad++高效排版与正则实战指南

核心功能与界面介绍多语言语法高亮支持正则表达式查找替换宏录制与批量操作插件扩展机制&#xff08;如NppExport、JSON Viewer&#xff09;基础排版优化技巧自动缩进与格式对齐&#xff08;Edit > Blank Operations&#xff09;显示符号&#xff08;视图 > 显示符号 >…...

逆向解析百度搜索核心技术

技术背景与意义百度搜索技术栈的核心组成&#xff08;爬虫、索引、排序算法等&#xff09;逆向工程在技术演进中的价值&#xff08;竞品分析、漏洞挖掘、性能优化参考&#xff09;数据采集层逆向分析爬虫策略逆向&#xff1a;User-Agent伪装、频率限制规避手段反爬机制突破&…...

Android开发必备:Hilt和ViewModel在Activity、Fragment、Compose中的避坑指南(附完整代码示例)

Android开发进阶&#xff1a;Hilt与ViewModel在三大场景下的深度避坑实践 在Android开发生态中&#xff0c;依赖注入和状态管理一直是构建高质量应用的核心命题。Hilt作为Google官方推荐的依赖注入框架&#xff0c;与ViewModel的生命周期管理能力相结合&#xff0c;为开发者提供…...

C#实战:用MySqlBulkCopy实现MySQL百万级数据秒级导入(附完整代码)

C#实战&#xff1a;用MySqlBulkCopy实现MySQL百万级数据秒级导入&#xff08;附完整代码&#xff09; 在数据处理领域&#xff0c;批量导入海量数据一直是开发者面临的挑战之一。传统的一条条插入方式在面对百万级数据时往往显得力不从心&#xff0c;不仅耗时耗力&#xff0c;还…...

Fish-Speech-1.5问题解决:常见安装错误排查与性能优化技巧

Fish-Speech-1.5问题解决&#xff1a;常见安装错误排查与性能优化技巧 想用Fish-Speech-1.5生成自然流畅的多语言语音&#xff0c;结果被各种安装报错和性能问题卡住了&#xff1f;这感觉就像拿到一台高级音响&#xff0c;却因为电源线接触不良而听不到声音&#xff0c;确实让…...

【无人机路径规划】基于改进A星算法

研究课题&#xff1a;基于改进A星算法的无人机路径规划关键词&#xff1a;无人机&#xff1b; 路径规划&#xff1b; A星算法改进方向&#xff1a;自适应权重系数优化启发函数课题说明&#xff1a;研究标准A star算法的基本原理和三维地图路径规划求解方法&#xff0c;结合参考…...

第7章 概率与统计:数理统计基础——总体、样本与统计量

第7章 概率与统计:数理统计基础——总体、样本与统计量 一、从概率论到数理统计:思维的一次跃迁 前面六章,我们都在概率论的框架内: 已知分布/参数 → 研究随机现象的规律。 但现实世界恰恰相反: 我们不知道总体分布,不知道参数; 我们只有一批观测数据; 目标:从数据…...

MMD字体突然变小?3步教你恢复默认DPI设置(附截图指引)

MMD界面字体异常缩小&#xff1f;三步精准修复DPI设置问题 当你在使用MikuMikuDance&#xff08;MMD&#xff09;进行3D动画创作时&#xff0c;突然发现软件界面和字体变得异常微小&#xff0c;这并非软件故障&#xff0c;而是Windows系统DPI缩放设置被意外修改导致的常见问题。…...