給定乙個包含n個點(編號為1~n)的無向圖,初始時圖中沒有邊。
現在要進行m個操作,操作共有三種:
「c a b」,在點a和點b之間連一條邊,a和b可能相等;
「q1 a b」,詢問點a和點b是否在同乙個連通塊中,a和b可能相等;
「q2 a」,詢問點a所在連通塊中點的數量;
第一行輸入整數n和m。
接下來m行,每行包含乙個操作指令,指令為「c a b」,「q1 a b」或「q2 a」中的一種。
對於每個詢問指令」q1 a b」,如果a和b在同乙個連通塊中,則輸出「yes」,否則輸出「no」
對於每個詢問指令「q2 a」,輸出乙個整數表示點a所在連通塊中點的數量
每個結果佔一行。
1 ≤n
,m≤1
05
1≤n,m≤10^5
1≤n,m≤
105
5 5c 1 2
q1 1 2
q2 1
c 2 5
q2 5
yes23思路
注意
#include
using
namespace std;
const
int n =
1e5+20;
int n, m, p[n]
, s[n]
;int
find
(int x)
int main (
)
string x;
int a, b;
for(
int i =
0; i < m; i ++
)else
if(x ==
"q1"
)else
if(x ==
"q2")}
return0;
}
AcWing 連通塊中點的數量 並查集
時 空限制 1s 64mb 給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 第一行輸入整數n...
837 連通塊中點的數量 AcWing
原題鏈結 並查集模板題 當兩個點互相可達,我們稱它們連通.本題判斷連通點的個數,就是判斷同一集合下點的個數,一棵樹下子節點各不同,因此用陣列sizes記錄下標為根節點的點的個數 1 include 2 using namespace std 3const int n 1e5 10 4 intp n ...
連通塊中點的數量(並查集)
題目 連通塊中點的數量 給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 輸入格式 第一行輸入...