時間限制:
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 描述 亂世天下,諸侯割據。每個諸侯王都有一片自己的領土。但是不是所有的諸侯王都是安分守己的,實力強大的諸侯國會設法吞併那些實力弱的,讓自己的領土面積不斷擴大。而實力弱的諸侯王為了不讓自己的領土被吞併,他會聯合一些其他同樣弱小的諸侯國,...