某學術會議上,一共有n個人參加,現在已知每個人會的語言(乙個人可能不會任何語言)。現在有一種學習機,每乙個學習機可以在會議期間使乙個人暫時掌握一種自己不會的語言,問要使得任意兩個人都能直接或者間接的交流至少準備多少個學習機?
間接交流的意思是:可以通過其他參加會議的人翻譯(可能或出現很多人一起幫忙翻譯的情況)進行交流。如:第乙個人和第二個人會第一種語言,第二個人和第三個人會第二種語言,那麼第乙個人可以和第三個人進行交流(通過第二個的翻譯)
輸入:第一行3個數n,m,k代表人物,預言數,已知的資訊數。接下來k行,每行兩個數u,v,代表第u個人會第v種語言
輸出:輸出需要準備的學習機的個數
樣例輸入:
3 3 2
2 33 1
樣例輸出:
#include#include#includeusing namespace std;
const int n=100005;
int pa[n];
bool vis[n];
int v2u[n];
inline void init(int n)
int findpa(int x)
inline void merge(int x,int y)
bool issame(int x,int y)
int main()
if(k!=0)
printf("%d\n",num-1+s.size());
else
printf("%d\n",n);
return 0;
}
並查集(求朋友圈的個數)
有如下題目 已知有n個人和m對好友關係 存於陣列r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如 n 5 m 3 r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1 2 3屬於乙個朋友圈,4 5屬於另乙個朋友...
C 求朋友圈的個數 並查集方法
有n個同學,他們之間有些是朋友,有些不是。友誼 是可以傳遞的,例如a和b是朋友,b和c是朋友,那麼a與c也是朋友 朋友圈就是完成 友誼 傳遞後的一組朋友。給定n n的矩陣代表同學間是否是朋友,如果m i j 1代表第i個學生與第j個學生是朋友,否則不是。求朋友圈的個數。例如 input 1,1,0 ...
sdut 1488 連通分量的個數(並查集)
time limit 1000ms memory limit 65536kb submit statistic discuss problem description 在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。如果圖中任意兩個頂點之間都連通,則稱該圖為連通圖,否則,稱該圖為非連...