結果

問題 No.1614 Majority Painting on Tree
ユーザー ngtkanangtkana
提出日時 2021-07-01 18:17:28
言語 Rust
(1.77.0 + proconio)
結果
RE  
実行時間 -
コード長 1,224 bytes
コンパイル時間 13,629 ms
コンパイル使用メモリ 402,376 KB
実行使用メモリ 11,136 KB
最終ジャッジ日時 2024-07-17 15:43:09
合計ジャッジ時間 17,152 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
testcase_24 RE -
testcase_25 RE -
testcase_26 RE -
testcase_27 RE -
testcase_28 RE -
testcase_29 RE -
testcase_30 RE -
testcase_31 RE -
testcase_32 RE -
testcase_33 RE -
testcase_34 RE -
testcase_35 RE -
testcase_36 WA -
testcase_37 RE -
testcase_38 RE -
testcase_39 RE -
testcase_40 RE -
testcase_41 RE -
testcase_42 RE -
testcase_43 RE -
testcase_44 RE -
testcase_45 RE -
testcase_46 RE -
testcase_47 WA -
testcase_48 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

use std::{
    io::{stdin, Read},
    mem::replace,
    str::Split,
};

fn main() {
    let mut buf = String::new();
    stdin().read_to_string(&mut buf).unwrap();
    let mut buf = buf.split("\n");
    let [n, c] = two_usize(&mut buf);
    assert!((2..=100_000).contains(&n));
    assert!((1..=256).contains(&c));
    let mut g = vec![Vec::new(); n];
    for _ in 0..n - 1 {
        let [a, b] = two_usize(&mut buf);
        assert!((1..=n).contains(&a));
        assert!((1..=n).contains(&b));
        let a = a - 1;
        let b = b - 1;
        g[a].push(b);
        g[b].push(a);
    }
    let mut used = vec![false; n];
    let mut stack = vec![0];
    used[0] = true;
    while let Some(x) = stack.pop() {
        for &y in &g[x] {
            if replace(&mut used[y], true) {
                stack.push(y);
            }
        }
    }
    assert!(used.iter().all(|&x| x));
    end(&mut buf)
}

fn two_usize(buf: &mut Split<'_, &str>) -> [usize; 2] {
    let s = buf.next().unwrap().split(" ").collect::<Vec<_>>();
    assert_eq!(s.len(), 2);
    [s[0].parse().unwrap(), s[1].parse().unwrap()]
}

fn end(buf: &mut Split<'_, &str>) {
    assert!(buf.next().unwrap().is_empty());
    assert!(buf.next().is_none())
}
0