分數調查(帶權並查集)

2021-08-21 13:29:14 字數 661 閱讀 5748

原題:hihocoder - 1515

題意:

有n學生,告訴你m條訊息,每天訊息為a比b高s分

q此詢問,問兩個學生的分數差,不能得出則-1

解析:

在並查集的基礎上,我們用乙個陣列v來記錄點於其現在的根結點的差,v[2]==10表示二比二的根高10

在findfa和unit函式進行的同時更新v就行

在最後計算的時候,假設有相同根,那麼用他們和根的差相減即可

**:

#include

#include

using namespace std;

#define d long long

d read()

const int maxn = 100009;

int fa[maxn],v[maxn];

int fi(int a)

int un(int a,int b,int

s) fa[f1]=f2;v[f1]=s+v[b]-v[a];

return0;}

int main()

while(q--)

}

分數調查(帶權並查集

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi的學校總共有n名學生,編號1 n。學校剛剛進行了一場全校的古詩文水平測驗。學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。小hi想知道利用這些訊息,能不能判斷出某兩位同學...

並查集,帶權並查集

題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...

帶權並查集

食物鏈 time limit 1000ms memory limit 10000k total submissions 71395 accepted 21146 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n...