普通並查集之宗教問題 題目

2021-07-10 01:46:56 字數 1129 閱讀 6116

題目:宗教問題

第一行輸入n(人數),m(關係數)

接著換行輸入m個關係

換行輸入詢問次數q

換行輸入詢問每組詢問對應一組輸出:如果是則輸出yes,否或不一定都輸出no例:5

3 ,5個人,3個關係12

1說他在自己的教堂裡看到過223

2說他在自己的教堂裡看到過345

4說他在自己的教堂裡看到過5

22組詢問次數

13 問:1和3是同乙個教堂嗎? 輸出yes

15 問:1和5是同乙個教堂嗎? 輸出no

#include

int tree[1000]; //注意這個陣列要建到外面

int find(int x)

void uset(int a, int b)

int main()

scanf("%d",&n); //詢問次數

for(i=0;iscanf("%d%d",&a,&b); //a和b是同乙個根嗎?

if(find(a)==find(b)) //找a和b的根

printf("yes\n");

else

printf("no\n");

}return

0; }

壓縮路徑:查詢過的節點都直接連到根上,降低樹的高度,所以遞迴查詢時深度遍歷的

層數降低了,所以越用越快

#include

int tree[1000];

int find(int x)

void uset(int a, int b)

} int main()

scanf("%d",&n); //詢問次數

for(i=0;iscanf("%d%d",&a,&b); //a 和 b 是同乙個宗教嗎?

if(find(a)==find(b)) //找a和b的根

printf("yes\n");

else

printf("no\n");

}return

0; }

宗教信仰(並查集)

問題描述 現如今世界上有如此多的宗教信仰,要將它們所有的都保持聯絡是非常困難的。你對於找出在乙個大學裡面同學們有多少不同的宗教信仰感興趣。你知道這個大學裡面有n個學生。如果讓你去乙個乙個問每乙個學生的宗教信仰是不可能的。而且,許多學生不願意表露他們的宗教信仰。有個方法可以避免這個問題,就是去問m 0...

並查集 宗教信仰

時間限制 1 sec 記憶體限制 128 mb 提交 15 解決 8 提交 狀態 討論版 世界上有許多不同的宗教,現在有乙個你感興趣的問題 找出多少不同的宗教,在你的大學中的大學生信仰了多少種不同的宗教。你知道在你的大學有n個學生 0輸入包含多組測試資料。每組測試資料的開頭包含兩個整數n和m。接下來...

宗教信仰(並查集)

問題描述 現如今世界上有如此多的宗教信仰,要將它們所有的都保持聯絡是非常困難的。你對於找出在乙個大學裡面同學們有多少不同的宗教信仰感興趣。你知道這個大學裡面有n個學生。如果讓你去乙個乙個問每乙個學生的宗教信仰是不可能的。而且,許多學生不願意表露他們的宗教信仰。有個方法可以避免這個問題,就是去問m 0...