結果

問題 No.3425 Mod K Graph Increments (Easy)
コンテスト
ユーザー まみめ
提出日時 2025-12-14 18:01:03
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,359 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,306 ms
コンパイル使用メモリ 345,276 KB
実行使用メモリ 7,852 KB
最終ジャッジ日時 2026-01-11 13:01:44
合計ジャッジ時間 5,034 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 1
other RE * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
#define rep(i, n) for (ll i = 0; i < (n); i++)
using namespace std;
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
#define all(x) (x).begin(), (x).end()

// int randint(int a, int b) {
//     assert(a < b);
//     long long seed =
//         chrono::high_resolution_clock::now().time_since_epoch().count();
//     mt19937_64 rng(seed);
//     uniform_int_distribution<int> d(a, b - 1);
//     return d(rng);
// }

void solve() {
    int N, K;
    cin >> N >> K;
    vector<vector<int>> G(N);
    rep(i, N - 1) {
        int u, v;
        cin >> u >> v;
        u--, v--;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    vi B(N);
    rep(i, N) { cin >> B[i]; }
    vi dist(N);
    vector<bool> visited(N);
    auto dfs = [&](auto dfs, int v, int d) -> void {
        visited[v] = true;
        dist[v] = d;
        for (int to : G[v]) {
            if (!visited[to]) {
                dfs(dfs, to, d + 1);
            }
        }
    };
    dfs(dfs, 0, 0);
    ll sum1 = 0, sum2 = 0;
    rep(i, N) {
        if (dist[i] % 2 == 0) {
            sum1 += B[i];
        } else {
            sum2 += B[i];
        }
    }
    if (sum1 % K == sum2 % K) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
}

int main() {
    int T;
    cin >> T;
    rep(i, T) { solve(); }
}
0