小明在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 21 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...