結果

問題 No.3425 Mod K Graph Increments (Easy)
コンテスト
ユーザー atcoder8
提出日時 2026-01-11 16:40:31
言語 Rust
(1.92.0 + proconio + num)
結果
AC  
実行時間 53 ms / 2,000 ms
コード長 933 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 27,340 ms
コンパイル使用メモリ 412,888 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-01-11 16:41:01
合計ジャッジ時間 26,042 ms
ジャッジサーバーID
(参考情報)
judge1 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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

fn main() {
    input! {
        t: usize,
    }

    let output = (0..t)
        .map(|_| if solve() { "Yes" } else { "No" })
        .collect::<Vec<_>>()
        .join("\n");
    println!("{output}");
}

fn solve() -> bool {
    input! {
        (n, m, k): (usize, usize, u32),
        uv: [(Usize1, Usize1); m],
        bb: [u32; n],
    }

    let mut graph = vec![vec![]; n];
    for &(u, v) in &uv {
        graph[u].push(v);
        graph[v].push(u);
    }

    recursion(&graph, None, 0, k, &bb) == 0
}

fn recursion(
    graph: &[Vec<usize>],
    parent: Option<usize>,
    current: usize,
    k: u32,
    bb: &[u32],
) -> u32 {
    let sum = graph[current]
        .iter()
        .filter(|&&adjacent| Some(adjacent) != parent)
        .map(|&adjacent| recursion(graph, Some(current), adjacent, k, bb))
        .fold(0_u32, |acc, x| (acc + x) % k);
    (bb[current] + k - sum) % k
}
0