題目:宗教問題
第一行輸入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...