Submission #37926054


Source Code Expand

use std::collections::{HashMap, VecDeque};

use proconio::{input, marker::Usize1};

fn adjacency_list(n: usize, uv: &[(usize, usize)]) -> Vec<Vec<usize>> {
    let mut e = vec![vec![]; n];
    for (u, v) in uv.iter().copied() {
        e[u].push(v);
        e[v].push(u);
    }
    e
}

fn bfs(n: usize, edges: &[Vec<usize>]) -> Vec<usize> {
    let mut color = 0_usize;
    let mut colors = vec![n; n];
    for start in 0..n {
        if colors[start] == n {
            let mut deque = VecDeque::new();
            deque.push_back(start);
            colors[start] = color;
            while let Some(u) = deque.pop_front() {
                for v in edges[u].iter().copied() {
                    if colors[v] == n {
                        colors[v] = color;
                        deque.push_back(v);
                    }
                }
            }
            color += 1;
        }
    }
    colors
}

fn main() {
    input! {
        n: usize,
        k: usize,
        l: usize,
        pq: [(Usize1, Usize1); k],
        rs: [(Usize1, Usize1); l],
    };

    let e1 = adjacency_list(n, &pq);
    let e2 = adjacency_list(n, &rs);

    let c1 = bfs(n, &e1);
    let c2 = bfs(n, &e2);

    let mut count = HashMap::new();
    for zipped in c1.iter().copied().zip(c2.iter().copied()) {
        *count.entry(zipped).or_insert(0) += 1;
    }

    for zipped in c1.iter().copied().zip(c2.iter().copied()) {
        println!("{}", count.get(&zipped).unwrap());
    }
}

Submission Info

Submission Time
Task D - Connectivity
User bouzuya
Language Rust (1.42.0)
Score 400
Code Size 1478 Byte
Status AC
Exec Time 409 ms
Memory 37488 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 18
Set Name Test Cases
Sample subtask0_0.txt, subtask0_1.txt, subtask0_2.txt
All subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt
Case Name Status Exec Time Memory
subtask0_0.txt AC 7 ms 2048 KiB
subtask0_1.txt AC 3 ms 2044 KiB
subtask0_2.txt AC 1 ms 2156 KiB
subtask1_0.txt AC 36 ms 11552 KiB
subtask1_1.txt AC 385 ms 33048 KiB
subtask1_10.txt AC 38 ms 12204 KiB
subtask1_11.txt AC 345 ms 31600 KiB
subtask1_12.txt AC 373 ms 35508 KiB
subtask1_13.txt AC 397 ms 36132 KiB
subtask1_14.txt AC 331 ms 29732 KiB
subtask1_2.txt AC 294 ms 26836 KiB
subtask1_3.txt AC 398 ms 36716 KiB
subtask1_4.txt AC 355 ms 34864 KiB
subtask1_5.txt AC 38 ms 12200 KiB
subtask1_6.txt AC 327 ms 30544 KiB
subtask1_7.txt AC 395 ms 36056 KiB
subtask1_8.txt AC 409 ms 37488 KiB
subtask1_9.txt AC 291 ms 27832 KiB