Submission #73708534


Source Code Expand

use proconio::input;

const MOD: usize = 998244353;

fn main() {
    input! { n: usize, m: usize }

    let mut edges = Vec::with_capacity(m);
    for _ in 0..m {
        input! { u: usize, v: usize }
        edges.push((u - 1, v - 1));
    }

    let mut pow2 = vec![0usize; m + 1];
    pow2[0] = 1;
    for i in 1..=m {
        pow2[i] = (pow2[i - 1] * 2) % MOD;
    }

    let mut dsu = ac_library::Dsu::new(n);
    let mut removed_cost_sum = 0usize;
    let mut component_count = n;

    for i in (0..m).rev() {
        let (u, v) = edges[i];
        let edge_index = i + 1;

        if !dsu.same(u, v) {
            if component_count > 2 {
                dsu.merge(u, v);
                component_count -= 1;
            } else {
                removed_cost_sum = (removed_cost_sum + pow2[edge_index]) % MOD;
            }
        }
    }

    println!("{}", removed_cost_sum);
}

Submission Info

Submission Time
Task E - Divide Graph
User memoka
Language Rust (rustc 1.89.0)
Score 475
Code Size 928 Byte
Status AC
Exec Time 24 ms
Memory 7492 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 02_perfect_00.txt, 02_perfect_01.txt, 02_perfect_02.txt, 02_perfect_03.txt, 02_perfect_04.txt, 02_perfect_05.txt, 02_perfect_06.txt, 02_perfect_07.txt, 02_perfect_08.txt, 03_tree_00.txt, 03_tree_01.txt, 03_tree_02.txt, 03_tree_03.txt, 03_tree_04.txt, 03_tree_05.txt, 03_tree_06.txt, 04_handmade_00.txt, 04_handmade_01.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 1928 KiB
00_sample_01.txt AC 1 ms 1932 KiB
00_sample_02.txt AC 1 ms 1840 KiB
01_random_00.txt AC 15 ms 6060 KiB
01_random_01.txt AC 13 ms 5448 KiB
01_random_02.txt AC 12 ms 4908 KiB
01_random_03.txt AC 2 ms 2252 KiB
01_random_04.txt AC 15 ms 5848 KiB
01_random_05.txt AC 12 ms 4800 KiB
01_random_06.txt AC 10 ms 4304 KiB
01_random_07.txt AC 10 ms 4336 KiB
01_random_08.txt AC 15 ms 5340 KiB
01_random_09.txt AC 10 ms 4404 KiB
01_random_10.txt AC 22 ms 7112 KiB
01_random_11.txt AC 21 ms 7088 KiB
01_random_12.txt AC 23 ms 7232 KiB
01_random_13.txt AC 15 ms 5440 KiB
01_random_14.txt AC 20 ms 6608 KiB
02_perfect_00.txt AC 16 ms 6416 KiB
02_perfect_01.txt AC 17 ms 6664 KiB
02_perfect_02.txt AC 17 ms 6596 KiB
02_perfect_03.txt AC 17 ms 6656 KiB
02_perfect_04.txt AC 16 ms 6540 KiB
02_perfect_05.txt AC 17 ms 6656 KiB
02_perfect_06.txt AC 17 ms 6576 KiB
02_perfect_07.txt AC 17 ms 6600 KiB
02_perfect_08.txt AC 17 ms 6692 KiB
03_tree_00.txt AC 22 ms 7360 KiB
03_tree_01.txt AC 24 ms 7380 KiB
03_tree_02.txt AC 20 ms 7436 KiB
03_tree_03.txt AC 22 ms 7424 KiB
03_tree_04.txt AC 22 ms 7296 KiB
03_tree_05.txt AC 23 ms 7492 KiB
03_tree_06.txt AC 23 ms 7344 KiB
04_handmade_00.txt AC 1 ms 2132 KiB
04_handmade_01.txt AC 19 ms 7400 KiB