Submission #31815651


Source Code Expand

Copy
use std::collections::BTreeSet;
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 dfs(
edges: &[Vec<usize>],
c: &[usize],
set: &mut BTreeSet<usize>,
res: &mut Vec<bool>,
u: usize,
p: usize,
) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
use std::collections::BTreeSet;

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 dfs(
    edges: &[Vec<usize>],
    c: &[usize],
    set: &mut BTreeSet<usize>,
    res: &mut Vec<bool>,
    u: usize,
    p: usize,
) {
    for v in edges[u].iter().copied() {
        if v == p {
            continue;
        }

        let mut b = false;
        if set.insert(c[v]) {
            b = true;
            res[v] = true;
        }

        dfs(edges, c, set, res, v, u);

        if b {
            set.remove(&c[v]);
        }
    }
}

fn main() {
    input! {
        n: usize,
        c: [Usize1; n],
        ab: [(Usize1, Usize1); n - 1],
    };

    let edges = adjacency_list(n, &ab);
    let mut set = BTreeSet::new();
    let mut res = vec![false; n];
    res[0] = true;
    set.insert(c[0]);
    dfs(&edges, &c, &mut set, &mut res, 0, 0);
    for a in res
        .iter()
        .copied()
        .enumerate()
        .filter(|&(_, b)| b)
        .map(|(i, _)| i + 1)
    {
        println!("{}", a);
    }
}

Submission Info

Submission Time
Task E - Unique Color
User bouzuya
Language Rust (1.42.0)
Score 500
Code Size 1212 Byte
Status AC
Exec Time 232 ms
Memory 24176 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 29
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All binary_01.txt, binary_02.txt, binary_03.txt, binary_04.txt, binary_05.txt, min_01.txt, min_02.txt, path_01.txt, path_02.txt, path_03.txt, path_04.txt, path_05.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, sample_01.txt, sample_02.txt, star_01.txt, star_02.txt, star_03.txt, star_04.txt, star_05.txt
Case Name Status Exec Time Memory
binary_01.txt AC 49 ms 12572 KB
binary_02.txt AC 51 ms 12756 KB
binary_03.txt AC 75 ms 12900 KB
binary_04.txt AC 210 ms 12796 KB
binary_05.txt AC 212 ms 12796 KB
min_01.txt AC 2 ms 2064 KB
min_02.txt AC 2 ms 2116 KB
path_01.txt AC 57 ms 22592 KB
path_02.txt AC 49 ms 22564 KB
path_03.txt AC 58 ms 22568 KB
path_04.txt AC 80 ms 22660 KB
path_05.txt AC 232 ms 24176 KB
random_01.txt AC 5 ms 2108 KB
random_02.txt AC 2 ms 2152 KB
random_03.txt AC 4 ms 2200 KB
random_04.txt AC 11 ms 2260 KB
random_05.txt AC 7 ms 2132 KB
random_06.txt AC 43 ms 12232 KB
random_07.txt AC 43 ms 12340 KB
random_08.txt AC 97 ms 12264 KB
random_09.txt AC 207 ms 12392 KB
random_10.txt AC 200 ms 12292 KB
sample_01.txt AC 2 ms 2044 KB
sample_02.txt AC 1 ms 2140 KB
star_01.txt AC 34 ms 12016 KB
star_02.txt AC 192 ms 11960 KB
star_03.txt AC 173 ms 11964 KB
star_04.txt AC 186 ms 11984 KB
star_05.txt AC 188 ms 12004 KB


2025-04-11 (Fri)
21:03:47 +00:00