題解 luogu p2078 朋友

2022-09-18 02:30:27 字數 592 閱讀 8777

並查集

總結:1.求兩次並查集可以用乙個陣列來使用, 一次並查集後更新fa陣列即可;

2.求兩個值的是否是一樣的祖先時,用find(),不用fa陣列判斷,有可能其中某個值的路徑沒被壓縮;

3.a,b公司都有可能是男或女

#includeusing

namespace

std;

intn, m, q, p, a, b, s1, s2;

int fa[10005

];int find(int

x)void hb(int x, int

y)int

main()

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

if(find(i) == find(1)) s1++;

for(int i = 1; i <= m; i++) fa[i] =i;

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

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

if(find(i) == find(1)) s2++;

cout

}

洛谷 2078 朋友

小明在a公司工作,小紅在b公司工作。這兩個公司的員工有乙個特點 乙個公司的員工都是同性。a公司有n名員工,其中有p對朋友關係。b公司有m名員工,其中有q對朋友關係。朋友的朋友一定還是朋友。每對朋友關係用兩個整數 xi,yi 組成,表示朋友的編號分別為xi,yi。男人的編號是正數,女人的編號是負數。小...

luogu P1816 忠誠 題解

用st表來解決rmq問題。表示同時培訓學的st表,然後我就忘得差不多了,在這裡推薦一篇blog 大佬cym的 自己再 一篇 舉例 給出一陣列a 0 5 則區間 2,5 之間的最值為1。1 離線預處理 運用dp思想,用於求解區間最值,並儲存到乙個二維陣列中。具體解釋 1 離線預處理 st演算法使用dp...

帥到沒朋友 題解

原題鏈結 輸入格式 輸入第一行給出乙個正整數n 100 是已知朋友圈的個數 隨後n行,每行首先給出乙個正整數k 1000 為朋友圈中的人數,然後列出乙個朋友圈內的所有人 為方便起見,每人對應乙個id號,為5位數字 從00000到99999 id間以空格分隔 之後給出乙個正整數m 10000 為待查詢...