AcWing 837. 连通块中点的数量-golang
原题链接
简单
作者:
一只鱼
,
2021-09-03 17:36:52
,
所有人可见
,
阅读 214
AcWing 837. 连通块中点的数量-golang
package main
import "fmt"
var data []int
var num []int
func main(){
var n, m int
fmt.Scan(&n, &m)
data = make([]int, n+1)
num = make([]int, n+1)
for i := 1; i <= n; i++{
data[i] = i
num[i] = 1
}
var op string
var a, b int
for m > 0{
m--
fmt.Scan(&op)
if op == "C"{
fmt.Scan(&a, &b)
if find(a) == find(b){
continue
}
num[find(b)] += num[find(a)]
data[find(a)] = data[find(b)]
continue
}
if op == "Q1"{
fmt.Scan(&a, &b)
if find(a) == find(b){
fmt.Println("Yes")
}else{
fmt.Println("No")
}
continue
}
fmt.Scan(&a)
fmt.Println(num[find(a)])
}
}
func find(x int)int{
if data[x] != x{
data[x] = find(data[x])
}
return data[x]
}