結果

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

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
//#include <atcoder/all>
using namespace std;
//using namespace atcoder;
using ll = long long;
using ld = long double;
//using mint = modint998244353;
int main(){
    ll T;
    cin >> T;
    while(T--){
        ll n,m,k;
        cin >> n >> m >> k;

        vector<vector<ll>> pass(n,vector<ll>(0));
        vector<pair<ll,ll>> way(0);
        //unordered_map<ll,ll> cost;
        ll u,v;

        for(ll i = 0; i < m; i++){
            cin >> u >> v;
            u--;
            v--;
            pass[u].push_back(v);
            pass[v].push_back(u);
        }

        vector<ll> b(n,0);
        
        for(ll i = 0; i < n; i++){
            cin >> b[i];
        }

        bool ans = 1;
        priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>> bfs;
        vector<bool> come(n,0);
        vector<ll> num(n,0);
        

        for(ll i = 0; i < n; i++){
            num[i] = pass[i].size();
            if(num[i] == 1){
                bfs.push({1,i});
            }
        }


        while(!bfs.empty()){
            ll x = bfs.top().second;
            bfs.pop();
            if(come[x])continue;
            come[x] = 1;
            //if(num[x] > 1)break;

            for(ll i : pass[x]){
                if(come[i])continue;
                num[i]--;
                num[x]--;

                b[i] += k;
                b[i] -= b[x];
                b[i] %= k;
                b[x] = 0;

                bfs.push({num[i],i});
            }

            if(b[x] != 0){
                ans = 0;
                break;
            }
        }

        if(ans)cout << "Yes" << '\n';
        else cout << "No" << '\n';
    }



    return 0;
}
0