結果

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

ソースコード

diff #
raw source code

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

#[fastout]
fn main() {
    input! { t: usize }

    for _ in 0..t {
        let ans = solve();
        println!("{}", if ans { "Yes" } else { "No" });
    }
}

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

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

    let mut pre_order = vec![];
    let mut parent = vec![!0; n];
    let mut stack = vec![0];
    while let Some(v) = stack.pop() {
        pre_order.push(v);
        graph[v].retain(|&u| u != parent[v]);
        for &u in &graph[v] {
            parent[u] = v;
            stack.push(u);
        }
    }

    let mut a = vec![0usize; n];
    for &v in pre_order.iter().skip(1).rev() {
        let p = parent[v];
        let add = (b[v] + k - a[v]) % k;
        a[v] = (a[v] + add) % k;
        a[p] = (a[p] + add) % k;
    }

    a[0] == b[0]
}
0