NYOJ1022合縱連橫(支援刪除操作的並查集)

2021-07-31 14:10:18 字數 1175 閱讀 3432

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3

描述

亂世天下,諸侯割據。每個諸侯王都有一片自己的領土。但是不是所有的諸侯王都是安分守己的,實力強大的諸侯國會設法吞併那些實力弱的,讓自己的領土面積不斷擴大。而實力弱的諸侯王為了不讓自己的領土被吞併,他會聯合一些其他同樣弱小的諸侯國,組成聯盟(聯盟不止乙個),來共同抵抗那些強大的諸侯國。 強大的諸侯國為了瓦解這些聯盟,派出了最優秀的間諜來離間他們,使一些諸侯國退出聯盟。最開始,每個諸侯國是乙個聯盟。

有兩種操作

1、u x y 表示x和y在同乙個聯盟。(0≤x,y2、d x   表示x退出聯盟。

輸入

多組測試資料

第一行兩個數,n和m(1 ≤ n≤ 10^5, 1 ≤ m ≤10^5),分別表示諸侯國的個數和操作次數。

接下來有m行操作

輸出輸出聯盟的個數

樣例輸入

5 7

u 0 1

u 1 2

u 0 3

d 0

u 1 4

d 2

u 0 2

10 1

u 0 9

樣例輸出

case #1: 2

case #2: 9

帶刪除的並查集實現不做過多的解釋,越解釋可能越糊塗,直接看**會更加清晰。

#include#include#define max 100005

int pos[max],p[max*2],mark[max*2];

int find(int x)

return p[x];

}void bin(int x,int y)

}int main()

{ int n,f,m,i,u,v,res,k=0;

char ch;

while(scanf("%d%d",&n,&m)!=eof)

{ res=0;

f=n;

memset(mark,0,sizeof(mark));

for(i=0;i

NYOJ 1022合縱連橫 並查集刪除演算法

合縱連橫 時間限制 1000 ms 記憶體限制 65535kb 難度 3 描述 亂世天下,諸侯割據。每個諸侯王都有一片自己的領土。但是不是所有的諸侯王都是安分守己的,實力強大的諸侯國會設法吞併那些實力弱的,讓自己的領土面積不斷擴大。而實力弱的諸侯王為了不讓自己的領土被吞併,他會聯合一些其他同樣弱小的...

NYOJ 1022 合縱連橫(並查集刪除操作)

合縱連橫 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 亂世天下,諸侯割據。每個諸侯王都有一片自己的領土。但是不是所有的諸侯王都是安分守己的,實力強大的諸侯國會設法吞併那些實力弱的,讓自己的領土面積不斷擴大。而實力弱的諸侯王為了不讓自己的領土被吞併,他會聯合一些其他同樣弱小...

NYOJ 合縱連橫(並查集刪點)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 亂世天下,諸侯割據。每個諸侯王都有一片自己的領土。但是不是所有的諸侯王都是安分守己的,實力強大的諸侯國會設法吞併那些實力弱的,讓自己的領土面積不斷擴大。而實力弱的諸侯王為了不讓自己的領土被吞併,他會聯合一些其他同樣弱小的諸侯國,...