洛谷 2078 朋友

2022-05-26 02:00:10 字數 1170 閱讀 7146

小明在a公司工作,小紅在b公司工作。

這兩個公司的員工有乙個特點:乙個公司的員工都是同性。

a公司有n名員工,其中有p對朋友關係。b公司有m名員工,其中有q對朋友關係。朋友的朋友一定還是朋友。

每對朋友關係用兩個整數(xi,yi)組成,表示朋友的編號分別為xi,yi。男人的編號是正數,女人的編號是負數。小明的編號是1,小紅的編號是-1.

大家都知道,小明和小紅是朋友,那麼,請你寫乙個程式求出兩公司之間,通過小明和小紅認識的人最多一共能配成多少對情侶。(包括他們自己)

第1行,4個空格隔開的正整數n,m,p,q。

之後p行,每行兩個正整數xi,yi。

之後q行,每行兩個負整數xi,yi。

一行,乙個正整數,表示通過小明和小紅認識的人最多一共能配成多少對情侶。(包括他們自己)

輸入 #1複製

4 3 4 2

1 11 2

2 31 3

-1 -2

-3 -3

輸出 #1複製

2

對於30%資料,n,m<=100,p,q<=200

對於80%資料,n,m<=4000,p,q<=10000.

對於全部資料,n,m<=10000,p,q<=20000。

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=20005

;int

n,m,p,q,x,y,a1,a2;

intfa1[n],fa2[n],ans1,ans2;

int find1(int

x)int find2(int

x)int

main()

for(int i=1;i<=q;i++)

for(int i=1;i<=n;i++)

if(find1(i)==find1(1)) ans1++;

for(int i=1;i<=m;i++)

if(find2(i)==find2(1)) ans2++;

printf("%d

",min(ans1,ans2));

return0;

}

題解 luogu p2078 朋友

並查集 總結 1.求兩次並查集可以用乙個陣列來使用,一次並查集後更新fa陣列即可 2.求兩個值的是否是一樣的祖先時,用find 不用fa陣列判斷,有可能其中某個值的路徑沒被壓縮 3.a,b公司都有可能是男或女 includeusing namespace std intn,m,q,p,a,b,s1,...

洛谷 P1851 好朋友

小可可和所有其他同學的手腕上都戴有乙個射頻識別序列號碼牌,這樣老師就可以方便的計算出他們的人數。很多同學都有乙個 好朋友 如果 a 的序列號的約數之和恰好等於b 的序列號,那麼 a的好朋友就是 b。在這裡,乙個數的約數不包括這個數本身。因為一些同學的號碼約數和大於其他任何同學的號碼,所以這些同學沒有...

洛谷P1655 小朋友的球

f i j 表示將i個求放入j個盒子的方案數,考慮第i個球的加入,這個球可能自己乙個盒子,剩下的i 1個球放在j 1個盒子中 也可以先把i 1個求放在j個盒子裡,在把這個球放進任意乙個盒子 綜上f i j f i 1 j 1 f i 1 j j。高精度。組合數 高精度 include include...