Submission #48060633
Source Code Expand
use std::collections::HashSet;
use ac_library::Dsu;
use proconio::{input, marker::Usize1};
fn main() {
input! {
n: usize,
m: usize,
ab: [(Usize1, Usize1); m],
q: usize,
txy: [(usize, Usize1, Usize1); q],
};
let mut edges = HashSet::new();
for (a, b) in ab.iter().copied() {
edges.insert((a.min(b), a.max(b)));
}
for (t, x, y) in txy.iter().copied() {
match t {
1 => {
edges.insert((x.min(y), x.max(y)));
}
2 => {
edges.remove(&(x.min(y), x.max(y)));
}
3 => {
// do nothing
}
_ => unreachable!(),
}
}
let mut dsu = Dsu::new(n);
for (a, b) in edges.iter().copied() {
dsu.merge(a, b);
}
let mut ans = vec![];
for (t, x, y) in txy.iter().copied().rev() {
match t {
1 => {
edges.remove(&(x.min(y), x.max(y)));
// rebuild dsu
dsu = Dsu::new(n);
for (a, b) in edges.iter().copied() {
dsu.merge(a, b);
}
}
2 => {
edges.insert((x.min(y), x.max(y)));
dsu.merge(x, y);
}
3 => {
ans.push(dsu.same(x, y));
}
_ => unreachable!(),
}
}
for a in ans.into_iter().rev() {
println!("{}", if a { "Yes" } else { "No" });
}
}
Submission Info
| Submission Time |
|
| Task |
K - Checking Connectivity |
| User |
bouzuya |
| Language |
Rust (rustc 1.70.0) |
| Score |
6 |
| Code Size |
1527 Byte |
| Status |
AC |
| Exec Time |
89 ms |
| Memory |
11748 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
6 / 6 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_all23_00.txt, 01_all23_01.txt, 01_all23_02.txt, 01_all23_03.txt, 01_all23_04.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 03_pre_00.txt, 03_pre_01.txt, 03_pre_02.txt, 03_pre_03.txt, 03_pre_04.txt, 04_suf_00.txt, 04_suf_01.txt, 04_suf_02.txt, 04_suf_03.txt, 04_suf_04.txt, 05_noq_00.txt, 05_noq_01.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
1912 KiB |
| 00_sample_01.txt |
AC |
1 ms |
1940 KiB |
| 01_all23_00.txt |
AC |
67 ms |
11588 KiB |
| 01_all23_01.txt |
AC |
64 ms |
10904 KiB |
| 01_all23_02.txt |
AC |
59 ms |
8664 KiB |
| 01_all23_03.txt |
AC |
53 ms |
6388 KiB |
| 01_all23_04.txt |
AC |
48 ms |
4956 KiB |
| 02_rnd_00.txt |
AC |
80 ms |
11680 KiB |
| 02_rnd_01.txt |
AC |
75 ms |
10992 KiB |
| 02_rnd_02.txt |
AC |
63 ms |
9240 KiB |
| 02_rnd_03.txt |
AC |
54 ms |
7124 KiB |
| 02_rnd_04.txt |
AC |
49 ms |
5420 KiB |
| 03_pre_00.txt |
AC |
89 ms |
11632 KiB |
| 03_pre_01.txt |
AC |
79 ms |
10980 KiB |
| 03_pre_02.txt |
AC |
66 ms |
8804 KiB |
| 03_pre_03.txt |
AC |
56 ms |
6788 KiB |
| 03_pre_04.txt |
AC |
50 ms |
5348 KiB |
| 04_suf_00.txt |
AC |
76 ms |
11748 KiB |
| 04_suf_01.txt |
AC |
68 ms |
11000 KiB |
| 04_suf_02.txt |
AC |
60 ms |
8704 KiB |
| 04_suf_03.txt |
AC |
53 ms |
6708 KiB |
| 04_suf_04.txt |
AC |
50 ms |
5588 KiB |
| 05_noq_00.txt |
AC |
34 ms |
11664 KiB |
| 05_noq_01.txt |
AC |
33 ms |
11740 KiB |