分數調查(帶權並查集

2022-04-30 12:45:11 字數 1042 閱讀 7372

時間限制:10000ms

單點時限:1000ms

記憶體限制:256mb

小hi的學校總共有n名學生,編號1-n。學校剛剛進行了一場全校的古詩文水平測驗。  

學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。  

小hi想知道利用這些訊息,能不能判斷出某兩位同學之間的分數高低?

第一行包含三個整數n, m和q。n表示學生總數,m表示小hi知道訊息的總數,q表示小hi想詢問的數量。  

以下m行每行三個整數,x, y和s。表示x號同學的分數比y號同學的分數高s分。  

以下q行每行兩個整數,x和y。表示小hi想知道x號同學的分數比y號同學的分數高幾分。  

對於50%的資料,1 <= n, m, q <= 1000  

對於100%的資料,1 <= n, m, q<= 100000 1 <= x, y <= n -1000 <= s <= 1000

資料保證沒有矛盾。

對於每個詢問,如果不能判斷出x比y高幾分輸出-1。否則輸出x比y高的分數。

樣例輸入

10 5 3  

1 2 10

2 3 10

4 5 -10

5 6 -10

2 5 10

1 10

1 5

3 5

樣例輸出

-1  

20

0

/*

見了鬼了,開始沒看到q,竟然想跑最短路

看到q,發現沒法跑最短路,就寫了並查集

維護每個點到父親的權值就好了,簡單題

*/#includeusing namespace std;

const int maxn=1e5+5;

int v[maxn],f[maxn];

int n,m,q;

int finds(int x)

void uion(int a,int b,int c)

int main()

for(int i=0;i

分數調查(帶權並查集)

原題 hihocoder 1515 題意 有n學生,告訴你m條訊息,每天訊息為a比b高s分 q此詢問,問兩個學生的分數差,不能得出則 1 解析 在並查集的基礎上,我們用乙個陣列v來記錄點於其現在的根結點的差,v 2 10表示二比二的根高10 在findfa和unit函式進行的同時更新v就行 在最後計...

並查集,帶權並查集

題意 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...