Rumor 並查集模板題

2021-09-19 23:59:22 字數 1933 閱讀 6064

rumor

vova 對自己發誓,絕不再玩電腦遊戲…… 但最近,知名的遊戲開發商暴火娛樂****,發布了他們的最新遊戲 「world of farcraft」,並且該遊戲變得非常流行。顯然,vova 又開始玩這款遊戲。

現在,他嘗試解決乙個任務。這項任務是,來到乙個名叫 overcity 的定居點,並在裡面散播謠言。

vova 知道,在 overcity 有 n 個人物角色。某些人物角色互為朋友,他們共享所獲得的資訊。vova 也知道,他可以給每個人物角色好處,以便人物角色開始散播謠言;第 i 個人物角色想要 ci 的**,作為散播謠言的交換。當乙個人物角色聽到了謠言之後,他就告訴自己的所有朋友,他的朋友們也開始散播謠言給自己的朋友 (免費),依此類推。

當全部的 n 個人物角色都聽到了謠言時,任務完成。請問,vova 至少需要多少**,才能完成這項任務?

如果你對題意仍有疑問,請參見樣例說明。

輸入格式

第一行包含兩個整數 n 和 m (1 ≤ n ≤ 105, 0 ≤ m ≤ 105),分別表示 overcity 的人物角色數量,以及存在多少對的朋友關係。

第二行包含 n 個整數 ci (0 ≤ ci ≤ 109) 表示第 i 個人物角色需要的**,以便開始散播謠言。

接下來的m 行,每行包含兩個數 (xi, yi),表示人物角色 xi 和 yi 是朋友關係 (1 ≤ xi, yi ≤ n, xi ≠ yi)。資料保證,每對朋友最多被列出一次。

輸出格式

列印乙個數,表示 vova 為了完成任務所必須花費的最少**。

輸入輸出樣例

輸入5 2

2 5 3 4 8

1 44 5

輸出10

輸入10 0

1 2 3 4 5 6 7 8 9 10

輸出55

輸入10 5

1 6 2 7 3 8 4 9 5 10

1 23 4

5 67 8

9 10

輸出15

樣例說明

在第乙個樣例中,最優決策是給第 1 個人物角色好處 (他將會散播謠言給第 4 個人物角色,並且第 4 個人物角色會散播謠言給第 5 個人物角色)。同時,vova 還必須給第 2 個、第 3 個人物角色,分別給予好處,以便他們得知謠言。

在第二個樣例中,vova 必須給每個人好處。

在第三個樣例中,最優決策是給第 1 個、第 3 個、第 5 個、第 7 個、第 9 個人物角色,分別予以好處。

思路 :

這道題其實沒有什麼好說的 是一道並查集的板子題 我們需要去對輸入的資料進行路徑壓縮 然後在後面進行pre[i]==i 的判斷就好了

ps:這道題是有坑點的 就是我們的find函式不可以寫成while迴圈的形式 應該寫成遞迴的形式 用空間去換時間 否則會time limit

ac**:

//並查集

#include

#include

using namespace std;

#define ll long long

int book[

100000+10

];int pre[

100000+10

];intfind

(int i)

int m,n;

int tmpa,tmpb;

intmain()

for(

int i=

1;i<=m;i++

) book[

find

(i)]

=min

(book[

find

(i)]

,book[i]);

ll sum=0;

for(

int i=

1;i<=m;i++

) cout << sum << endl;

return0;

}

並查集(模板題)

並查集是一種樹形的資料結構,用於處理一些不相交集合的合併及查詢問題。並查集通過乙個一維陣列來實現。1 查詢元素a和元素b是否屬於同一集合 2 合併元素a和元素b所在的集合 第一步 初始化 void init int n 第二步 查詢根節點 即找祖先 遞迴版本 int find f int x 不停找...

並查集模板題 P3367 模板 並查集

如題,現在有乙個並查集,你需要完成合併和查詢操作。第一行包含兩個整數n m,表示共有n個元素和m個操作。接下來m行,每行包含三個整數zi xi yi 當zi 1時,將xi與yi所在的集合合併 當zi 2時,輸出xi與yi是否在同一集合內,是的話輸出y 否則話輸出n 如上,對於每乙個zi 2的操作,都...

並查集模板

來自lifeng wang http hi.baidu.com fandywang jlu 前輩06年寫的東西,追隨前人足跡繼續努力。並查集的一些題目和相關解題報告 poj 1611 the suspects 最基礎的並查集 poj 2524 ubiquitous religions 最基本的並查集...