並查集 BZOJ 4243 交朋友

2021-07-13 20:59:01 字數 654 閱讀 4734

po姐說

把能進行會議的國家之間都用並查集連線起來,然後把每個進行過會議的國家扔進佇列跑bfs,將搜到的國家用並查集連線 

最終答案等於每個單點的出度個數+2*c(每個集合的大小,2) 

#include#include#include#include#define v g[p].v

using namespace std;

typedef long long ll;

inline char nc()

return *p1++;

}inline void read(int &x)

const int n=100005;

namespace tset

int fat(int u)

void union(int x,int y)

};int n,m;

ll ans;

int q[n],vst[n];

int l=-1,r=-1;

setm[n];

typedef set::iterator iter;

int main()

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

if(size[fat(i)]>1)

vst[i]=1,q[++r]=i;

while (l

並查集 好朋友

天勤書上一道題,很簡潔的展現了並查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友.要你分組使組內都是好朋友,組外都不是好朋友。資料量比較小,很水,路徑壓縮不考慮也沒問題。includeusing namespace std define max 200 int father max bool...

PAT 朋友圈(並查集)

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入的第一行包含兩個正整數n...

5 9 朋友圈 (並查集)

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入的第一行包含兩個正整數n...