【模板】縮點

洛谷p3387
思路:
算法:tarjan算法

根據題意,我們只要找到一個路徑,使得最終權重最大即可,首先,根據題目可知,如果一個點在一個環上,那么我們就將這整個環都選上,題目上允許我們能夠重復走,因此,我們可以將環縮成點,將環所稱點后,就可以轉換成樹,從沒有父節點的結點開始,我們向下走,每遍歷一個子結點,就將子節點更新一次,最終取結點的最大值即可
#include<bits/stdc++.h>using namespace std;int n,m;const int N=1e4+19;const int M=1e5+10;vector<int>vec[N];int a[N];int siz[N];int cnt;int dfn[N],low[N],tot;int p[N];int scc[N];int inDegree[N];stack<int>sta;//tarjan模板  void tarjan(int x){low[x]=dfn[x]=++tot;sta.push(x);for(auto y:vec[x]){if(dfn[y]==0){tarjan(y);low[x]=min(low[x],low[y]);}else if(!scc[y]){low[x]=min(low[x],dfn[y]);}}if(low[x]==dfn[x]){cnt++;while(1){int y=sta.top();sta.pop();siz[cnt]++;p[cnt]+=a[y];//記錄每個環的總權重scc[y]=cnt;if(y==x)break;}}}struct edge{int from;int to;}e[M];vector<int>ve[N];int ans[N];int s;int res=0;//topo算法
void solve(){queue<int>q;for(int i=1;i<=cnt;i++){ans[i]=p[i];//尋找沒有入讀的環if(!inDegree[i])q.push(i);}while(q.empty()==false){int x=q.front();q.pop();for(auto y:ve[x]){
//從沒有入度的環開始,向下遍歷它出度的環
//入度的環的最大值等于指向它的環的最大值加上它自己的權重ans[y]=max(ans[y],p[y]+ans[x]);
//處理一個入度的邊就減去一個邊inDegree[y]--;
//如果入度的點最終沒有邊指向它,那么代表它就成了一個根結點,那么,就將他放入隊列中if(inDegree[y]==0)q.push(y);}}for(int i=1;i<=cnt;i++){res=max(res,ans[i]);}cout<<res<<endl;}int main(void){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=m;i++){int a,b;cin>>a>>b;
//記錄邊的原因是為了后序我們進行環與環的入度操作時候,可以直接遍歷邊e[i].from=a;e[i].to=b;vec[a].push_back(b);}for(int i=1;i<=n;i++){if(!dfn[i])tarjan(i);}for(int i=1;i<=m;i++){
//記入環與環之間相連的邊int fr=scc[e[i].from];int tr=scc[e[i].to];if(fr==tr)continue;
//記入入度的邊inDegree[tr]++;ve[fr].push_back({tr});}solve();}

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

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

相關文章

js觸發隱式類型轉換的場景

JavaScript 的隱式類型轉換&#xff08;Implicit Type Coercion&#xff09;會在某些操作或上下文中自動觸發&#xff0c;將值從一種類型轉換為另一種類型。以下是常見的觸發場景&#xff1a; 1. 使用 &#xff08;寬松相等&#xff09;比較時 會嘗試將兩邊的值轉換為相同類型后…

c++將jpg轉換為灰度圖

c將jpg轉換為灰度圖 step1:添加依賴 下載這兩個文件&#xff0c;放在cpp同一目錄下&#xff0c;編譯生成 https://github.com/nothings/stb/blob/master/stb_image_write.h https://github.com/nothings/stb/blob/master/stb_image.hstep2:C:\Users\wangrusheng\source\repos…

python——正則表達式

一、簡介 在 Python 中&#xff0c;正則表達式主要通過 re 模塊實現&#xff0c;用于字符串的匹配、查找、替換等操作。 二、Python的re模塊 使用前需要導入&#xff1a; import re 三、常用方法 方法描述re.match(pattern, string)從字符串開頭匹配&#xff0c;返回第一個匹…

Soybean Admin 配置vite兼容低版本瀏覽器、安卓電視瀏覽器(飛視瀏覽器)

環境 window10 pnpm 8.15.4 node 8.15.4 vite 5.1.4 soybean admin: 1.0.0 native-ui: 2.38.0 小米電視 MIUI TV版本&#xff1a;MiTV OS 2.7.1886(穩定版) 飛視瀏覽器&#xff1a;https://www.fenxm.com/1220.html在小米電視安裝飛視瀏覽器可以去小紅書查安裝教程&#xff1a…

系統與網絡安全------網絡通信原理(1)

資料整理于網絡資料、書本資料、AI&#xff0c;僅供個人學習參考。 文章目錄 網絡通信模型協議分層計算機網絡發展計算機網絡功能什么是協議為什么分層郵局實例 OSI模型OSI協議模型OSI七層模型OSI七層的功能簡介 TCP/IP模型OSI模型與TCP/IP模型TCP/IP協議族的組成各層PDU設備與…

如何使用通義靈碼完成PHP單元測試 - AI輔助開發教程

一、引言 在軟件開發過程中&#xff0c;測試是至關重要的一環。然而&#xff0c;在傳統開發中&#xff0c;測試常常被忽略或草草處理&#xff0c;很多時候并非開發人員故意為之&#xff0c;而是缺乏相應的測試思路和方法&#xff0c;不知道如何設計測試用例。隨著 AI 技術的飛…

批量清空圖片的相機參數、地理位置等敏感元數據

我們在使用相機或者手機拍攝照片的時候&#xff0c;照片中都會帶有一些敏感元數據信息&#xff0c;比如說相機的型號&#xff0c;參數&#xff0c;拍攝的時間地點等等。這些信息雖說不是那么引人注意&#xff0c;但是在某些時候他是非常隱私非常重要的。如果我們將這些信息泄露…

SQL優化算法解析 | PawSQL 如何將EXISTS子查詢“秒拆“為JOIN連接

在數據庫性能調優中,子查詢優化是提升查詢效率的關鍵點之一。今天,我們將分享一個使用 PawSQL 對EXISTS子查詢進行重寫優化的案例,展示如何通過合理的SQL重寫與索引設計,實現超過487516.45%的性能提升! 一、案例分析&#xff1a;EXISTS子查詢的性能困境 這個查詢的目的是找出…

大模型day1 - 什么是GPT

什么是GPT 全稱 Generative Pre-trained Transformer 是一種基于 Transformer 架構的大規模 預訓練 語言模型&#xff0c;由OpenAI研發&#xff0c;但GPT僅僅只是借鑒了Transformer 中 Decoder 的部分&#xff0c;并且做了升級 Transformer 架構 Transformer架構 是一種用于…

MDM功能演示:遠程鎖定與數據擦除,保障企業移動設備安全

在當今高度互聯的商業環境中&#xff0c;企業數據伴隨著員工穿梭于不同城市、時區和設備之間。智能手機、平板電腦和筆記本電腦賦予員工隨時隨地辦公的能力&#xff0c;但也帶來了新的安全挑戰&#xff1a;設備一旦遺失或落入不當之手&#xff0c;企業數據就面臨泄露風險。 無…

深度集成學習不均衡樣本圖像分類

用五個不同的網絡&#xff0c;然后對分類概率進行平均&#xff0c;得到分類結果。基本上分類精度可以提升10% 1.導入基本庫 import torch import copy import torch.nn as nn import torchvision.models as models from torchvision import datasets from torchvision import…

從零開始學java--泛型

泛型 目錄 泛型 引入 泛型類 泛型與多態 泛型方法 泛型的界限 類型擦除 函數式接口 Supplier供給型函數式接口&#xff1a; Consumer消費型函數式接口&#xff1a; Function函數型函數式接口&#xff1a; Predicate斷言式函數式接口&#xff1a; 判空包裝 引入 …

5?? Coze+AI應用基礎教學(2025年全新版本)

目錄 一、了解應用開發 1.1 扣子應用能做什么 1.2 開發流程 1.3 開發環境 二、快速搭建一個AI應用 2.1 AI翻譯應用介紹 2.2 設計你的應用功能 2.3 創建 AI 應用項目 2.4 編寫業務邏輯(新建工作流) 2.5 搭建用戶界面 2.6 效果測試 2.7 發布應用 一、了解應用開發 …

工會成立100周年紀念,開發職工健身AI運動小程序、APP方案推薦

時光荏苒&#xff0c;轉眼間2025年五一將至&#xff0c;這一年對于中華全國總工會而言&#xff0c;具有非凡的歷史意義——它將迎來成立100周年的輝煌時刻。為了慶祝這一盛事&#xff0c;各級工會組織將精心籌備了一系列豐富多彩、形式多樣的紀念活動&#xff0c;旨在展現工會百…

【深度學習】Ubuntu 服務器配置開源項目FIGRET(PyTorch、torch-scatter、torch-sparse、Gurobi 安裝)

開源項目網址&#xff1a;https://github.com/FIGRET/figret 該項目在SIGCOMM2024發表&#xff0c;用深度學習方法處理流量工程中的突發問題 1. 創建新的 Conda 環境 使用國內鏡像源創建環境? conda create -n figret python3.8.0 --override-channels -c https://mirrors.…

【SpringCloud】從入門到精通(上)

今天主播我把黑馬新版微服務課程MQ高級之前的內容都看完了&#xff0c;雖然在看視頻的時候也記了筆記&#xff0c;但是看完之后還是忘得差不多了&#xff0c;所以打算寫一篇博客再溫習一下內容。 課程坐標:黑馬程序員SpringCloud微服務開發與實戰 微服務 認識單體架構 單體架…

MySQL中動態生成SQL語句去掉所有字段的空格

在MySQL中動態生成SQL語句去掉所有字段的空格 在數據庫管理過程中&#xff0c;我們常常會遇到需要對表中字段進行清洗和整理的情況。其中&#xff0c;去掉字段中的空格是一項常見的操作。當表中的字段數量較少時&#xff0c;我們可以手動編寫 UPDATE 語句來處理。但如果表中包…

【Grok 大模型深度解析】第二期:架構探秘與訓練哲學

在上一期的內容中,我們對 Grok 大模型從技術溯源的角度,了解了它從 Transformer 架構局限性出發,邁向混合架構創新的歷程,同時也梳理了從 Grok - 1 到 Grok - 3 的版本迭代所帶來的技術躍遷以及其獨特的差異化優勢。這一期,我們將深入到 Grok 大模型的架構內部,探究其精妙…

c# 使用NPOI將datatable的數據導出到excel

以下是使用 NPOI 庫 將 DataTable 數據導出到 Excel 的詳細步驟和代碼示例(支持 .xls 和 .xlsx 格式): 步驟 1:安裝 NPOI NuGet 包 Install-Package NPOI Install-Package NPOI.OOXML # 若需導出 .xlsx 格式 步驟 2:完整代碼實現 using NPOI.SS.UserModel; using NPOI.…

基于SpringBoot的求職招聘網站系統(源碼+數據庫)

473基于SpringBoot的求職招聘網站系統&#xff0c;本系統共分為2個角色&#xff1a;系統管理員、用戶&#xff0c;主要功能如下 【前臺功能】 用戶角色功能&#xff1a; 1. 注冊和登錄&#xff1a;注冊賬戶并登錄系統&#xff0c;以便訪問更多功能。 2. 個人信息管理&#x…