0
1
mirror of https://git.sb/baoshuo/OI-codes.git synced 2024-09-19 16:05:25 +00:00
https://loj.ac/s/1479164
This commit is contained in:
Baoshuo Ren 2022-06-09 18:02:56 +08:00
parent 821fa6c8db
commit 7e70996308
Signed by: baoshuo
GPG Key ID: 70F90A673FB1AB68
5 changed files with 80 additions and 0 deletions

68
LibreOJ/109/109.go Normal file
View File

@ -0,0 +1,68 @@
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
const mod = 998244353
var fa [4000005]int
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
raw := strings.Split(scanner.Text(), " ")
n, _ := strconv.Atoi(raw[0])
m, _ := strconv.Atoi(raw[1])
for i := 1; i <= n; i++ {
fa[i] = i
}
ans := 0
for i := 1; i <= m; i++ {
scanner.Scan()
raw := strings.Split(scanner.Text(), " ")
op, _ := strconv.Atoi(raw[0])
u, _ := strconv.Atoi(raw[1])
v, _ := strconv.Atoi(raw[2])
if op == 0 {
merge(u, v)
} else { // op == 1
ans <<= 1
ans |= bool2int(find(u) == find(v))
ans %= mod
}
}
fmt.Println(ans)
}
func find(x int) int {
if fa[x] == x {
return x
}
fa[x] = find(fa[x])
return fa[x]
}
func merge(x int, y int) {
fa[find(x)] = find(y)
}
func bool2int(x bool) int {
if x {
return 1
}
return 0
}

BIN
LibreOJ/109/data/0.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
LibreOJ/109/data/0.out (Stored with Git LFS) Normal file

Binary file not shown.

BIN
LibreOJ/109/data/1.in (Stored with Git LFS) Normal file

Binary file not shown.

BIN
LibreOJ/109/data/1.out (Stored with Git LFS) Normal file

Binary file not shown.