代碼隨想錄算法訓練營第五十六天|動態規劃part6

108.冗余連接

題目鏈接:108. 冗余的邊

文章講解:代碼隨想錄

思路:

題意隱含

只有一個冗余邊

#include <iostream>
#include <vector>
using namespace std;
int n=1001;
vector<int>father(n,0);void init(){for(int i=0;i<n;i++){father[i]=i;}
}
int find(int x){if(father[x]==x)  return x;else return father[x]=find(father[x]);
}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;
}int main(){int n;cin>>n;init();for(int i=0;i<n;i++){int s,t;cin>>s>>t;if(isSame(s,t)){   //s跟t是否連同 已經連通的話說明當前邊冗余cout<<s<<' '<<t<<endl;return 0;}else{join(s,t);    }}
}

?

109.冗余連接II

題目鏈接:109. 冗余的邊II

文章講解:代碼隨想錄

根據邊的入度來考慮

情況1: 存在入度為2的節點
說明這個節點存在冗余的邊(存在兩個父節點)

此處需要判斷刪除哪條邊?

情況2:不存在入度為2的節點 此時存在環對于存在環

應該找出哪條邊使得構成環? ? 可以通過并查集來找

#include <iostream>
#include <vector>
using namespace std;int n=1001;
vector<int>father(n,0);
void init(){for(int i=0;i<n;i++){father[i]=i;}
}
int find(int x){if(father[x]==x)return x;else return father[x]=find(father[x]);
}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;father[v]=u;
}bool isTreeAfterRemoveEdge(vector<vector<int>>edges,int deleteEdge){init();for(int i=0;i<edges.size();i++){if(i==deleteEdge) continue;if(isSame(edges[i][0],edges[i][1])){return false;}else{join(edges[i][0],edges[i][1]);}}return true;
}int getRemoveEdge(vector<vector<int>>edges){init();for(int i=0;i<edges.size();i++){if(isSame(edges[i][0],edges[i][1])){return i;}else{join(edges[i][0],edges[i][1]);}}return -1;
}int main(){int n;cin>>n;vector<vector<int>>edges;vector<int>inDegree(n+1,0);for(int i=0;i<n;i++){int s,t;cin>>s>>t;inDegree[t]++;edges.push_back({s,t});}vector<int>vec;   //記錄入度為2的邊(如果有的話就兩條邊)for(int i=n-1;i>=0;i--){if(inDegree[edges[i][1]]==2){vec.push_back(i);}}if(vec.size()>0){          //情況1if(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;}else{   //情況2 有環int ans=getRemoveEdge(edges);if(ans>=0)  cout<<edges[ans][0]<<' '<<edges[ans][1];}                       
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91496.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能體通信協議

智能體通信協議A2AACPANPAgoraagents.jsonLMOSAITPA2A A2A官方文檔&#xff1a;https://www.a2aprotocol.net/docs/introduction 開源代碼和詳細規范&#xff1a;https://github.com/google/A2A ACP ACP官方文檔&#xff1a;https://acp.agentunion.cn ANP ANP官方文檔&am…

QT交叉編譯環境配置

QT交叉編譯環境配置1 配置交叉編譯工具鏈1.1 解壓 放到/opt中1.2 使用環境變量1.2.1 設置成永久的環境變量1.2.2 臨時環境變量1.3 安裝編譯需要的軟件2 編譯tslib庫&#xff08;如果不需要觸摸屏直接跳過&#xff09;3. 編譯qt3.1 編譯源碼3.2 設置QCreator4 說明4.1 關于編譯器…

【Android】【Java】一款簡單的文本/圖像加解密APP

寫在前面 之前寫過一篇博客,名為《【Java編程】【計算機視覺】一種簡單的圖片加/解密算法》,介紹了用Java在電腦上對圖片進行簡單的加密和解密操作,見鏈接: 文章鏈接 但是,文中所描述的算法在實際操作當中,存在嚴重的噪音(圖像失真)的問題(且原因不明),本次經筆者研…

技術筆記 | Ubuntu 系統 OTA 升級全流程詳解

前言&#xff1a;在嵌入式系統設備管理中&#xff0c;OTA&#xff08;Over-The-Air&#xff09;升級是實現設備遠程維護、功能迭代的核心能力。本文基于 Ubuntu 系統環境&#xff0c;詳細拆解 updateEngine 工具的 OTA 升級方案&#xff0c;從配置開啟、命令使用到實戰案例與問…

重復請求問題

重復請求問題 使用Promise和AbortController來實現思路是&#xff1a;通過在會話緩存中存儲和比較請求信息&#xff0c;來防止用戶在短時間內重復提交相同的請求。 具體思路如下&#xff1a; 存儲請求信息&#xff1a;每次請求時&#xff0c;將請求的相關信息&#xff08;如URL…

CentOS7 Docker安裝RocketMQ完整教程

目錄 前言 環境準備 系統要求 檢查Docker狀態 創建網絡和目錄 創建Docker網絡 創建數據目錄 安裝NameServer 啟動NameServer容器 參數說明 驗證NameServer啟動 安裝Broker 創建Broker配置文件 啟動Broker容器 參數說明 驗證Broker啟動 安裝管理控制臺 啟動控制…

main函數,常量指針與指針常量,野指針等,void與void的區別

指針&#xff08;續&#xff09; main函數原型 定義 main函數有多種定義格式&#xff0c;main函數也是函數&#xff0c;函數相關的結論對main函數也有效。 main函數的完整寫法&#xff1a;int main(int argc, char *argv[]){..}int main(int argc, char **argv){..}擴展寫法&am…

Mac m系列芯片安裝node14版本使用nvm + Rosetta 2

由于蘋果 M 系列芯片&#xff08;包括 M4&#xff09;使用的是 ARM 架構&#xff0c;而 Node.js 14 是在英特爾 x86 架構時代發布的&#xff0c;因此在 M 系列 Mac 上安裝 Node.js 14 可能會遇到兼容性問題 解決方法&#xff1a;使用 nvm Rosetta 2右鍵點擊「終端」→「顯示簡…

前端基礎之《Vue(26)—Vue3兩種語法范式》

一、選項式1、HTML寫法<!-- 跟 Vue 說 Hello World&#xff01; --><script type"module"> import { createApp } from vuecreateApp({data() {return {message: Hello World!}} }).mount(#app) </script><div id"app"><h1>…

題目:BUUCTF之rip(pwn)

網址 BUUCTF在線評測https://buuoj.cn/challenges#rip打開&#xff0c;如圖所示 提示&#xff1a;先別啟動靶機&#xff0c;靶機可以最后在啟動&#xff0c;先分析下載的附件pwn1。 點擊下載&#xff0c;下載完成之后&#xff0c;該文件后綴類型改為exe&#xff08;就是將pwn…

el-button長按觸發事件(含未響應的解決方案)

參考代碼實現按鈕長按觸發邏輯 <template><el-button mousedown"handleMouseDown" mouseup"handleMouseUp">長按我</el-button> </template>data(){return{isPressed: false,timer: null,}},methods:{handleMouseDown() {this.isP…

List和 ObservableCollection 的區別

1. 變更通知機制?? ??ObservableCollection<T>?? 實現了INotifyCollectionChanged和INotifyPropertyChanged接口&#xff0c;當集合元素被添加、刪除、替換或重置時&#xff0c;會自動觸發CollectionChanged事件&#xff0c;通知綁定的UI控件更新&#xff08;如WPF…

支付寶沙箱(白屏,用戶訂單參數錯誤等)

情況&#xff1a;Laravel項目的line 對接 支付寶沙箱測試 手機網站支付 1&#xff1a;沙箱地址&#xff0c;小到我找不到&#xff1a;沙箱應用 - 開放平臺 2&#xff1a;雖然提供了系統密鑰&#xff0c;但是只是測API鏈接的&#xff0c;要沙箱測試轉賬什么的&#xff0c;得用…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 微博評論IP地圖可視化分析實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解微博評論IP地圖可視化分析實現 視頻在線地…

【代碼隨想錄】刷題筆記——二叉樹篇

目錄 144. 二叉樹的前序遍歷 94. 二叉樹的中序遍歷 145. 二叉樹的后序遍歷 102. 二叉樹的層序遍歷 226. 翻轉二叉樹 101. 對稱二叉樹 104. 二叉樹的最大深度 111. 二叉樹的最小深度 222. 完全二叉樹的節點個數 110. 平衡二叉樹 257. 二叉樹的所有路徑 404. 左葉子之…

基于deepseek的文本解析 - 超長文本的md結構化

pdf超長合同或其他超100頁非結構化文檔&#xff0c;很難全量提交deepseek進行分析&#xff0c;一般需要先進行分割。然而&#xff0c;不管是langchain還是llamaindex提供的文本分割工具&#xff0c;很難直接對非結構化文本進行準確的內容分割&#xff0c;很多原始整體段落被劃分…

介紹一個圖像修復開源項目,從模糊到清晰僅需1.7秒:HYPIR圖像修復技術如何改變數字世界?

文章概要 作為一名長期關注圖像處理技術的愛好者&#xff0c;當我第一次接觸到HYPIR這一革命性圖像修復工具時&#xff0c;我被其驚人的速度和質量所震撼。本文將全面介紹由中國科學院深圳先進技術研究院董超研究員團隊研發的HYPIR圖像修復大模型&#xff0c;詳細解析其核心技術…

基于UDP的SNMP協議

SNMP協議詳解 SNMP (Simple Network Management Protocol)&#xff0c;“簡單網絡管理協議”&#xff0c;是廣泛應用于TCP/IP網絡中&#xff0c;用于管理和監控網絡設備的一種標準協議。它允許網絡管理員查詢網絡設備的狀態信息、配置參數、接收故障告警等&#xff0c;從而實現…

3D空間中的變換矩陣

3D 空間中的變換矩陣詳解 在 3D 計算機圖形學中&#xff0c;所有幾何變換都可以通過 44 齊次變換矩陣 來表示。以下詳細介紹各種變換矩陣及其原理。 核心變換矩陣 1. 單位矩陣&#xff08;不變變換&#xff09; I[1000010000100001] I \begin{bmatrix} 1 & 0 & 0 &…

長連接(Long Connection)詳解

一、長連接基本概念長連接&#xff08;也稱為持久連接&#xff09;是指在一個TCP連接上可以連續發送多個HTTP請求/響應&#xff0c;而不是每次通信都建立新的連接。這是HTTP/1.1的默認行為&#xff0c;通過Connection: keep-alive頭部實現。二、工作原理1. 傳統短連接流程客戶端…