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
AC × 2
AC × 24
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