時間限制:
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 31 2 10
2 3 10
4 5 -10
5 6 -10
2 5 10
1 10
1 5
3 5
樣例輸出
-120
0
思路:帶權並查集。
把知道分數關係的人放入同乙個集合。r[x]表示x比p[x]高多少分。
#includeusing namespace std;
const int max=1e5+10;
int p[max],r[max];
int f(int x)
return p[x];
}int main()
} while(q--)
{ scanf("%d%d",&x,&y);
int fx=f(x),fy=f(y);
if(fx!=fy)cout<<-1<
hihoCoder 1515 分數調查
小hi的學校總共有n名學生,編號1 n。學校剛剛進行了一場全校的古詩文水平測驗。學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。小hi想知道利用這些訊息,能不能判斷出某兩位同學之間的分數高低?input 第一行包含三個整數n,m和q。n表示學生總數,...
分數調查 HihoCoder 1515
小hi的學校總共有n名學生,編號1 n。學校剛剛進行了一場全校的古詩文水平測驗。學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。小hi想知道利用這些訊息,能不能判斷出某兩位同學之間的分數高低?input 第一行包含三個整數n,m和q。n表示學生總數,...
HihoCoder 1515 帶權並查集
小hi的學校總共有n名學生,編號1 n。學校剛剛進行了一場全校的古詩文水平測驗。學校沒有公布測驗的成績,所以小hi只能得到一些小道訊息,例如x號同學的分數比y號同學的分數高s分。小hi想知道利用這些訊息,能不能判斷出某兩位同學之間的分數高低?input 第一行包含三個整數n,m和q。n表示學生總數,...