結果

問題 No.3552 Triangular Coloring
コンテスト
ユーザー yimiya(いみや)
提出日時 2026-05-05 00:09:23
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,333 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,465 ms
コンパイル使用メモリ 349,616 KB
実行使用メモリ 48,476 KB
最終ジャッジ日時 2026-05-22 21:48:32
合計ジャッジ時間 7,689 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 16 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
    ll N,M;
    cin >> N >> M;
    vector<vector<ll>>graph(N,vector<ll>(0));
    vector<ll>hen(N),invalidcnt(N),ans(N,-1);
    vector<vector<bool>>valid(N,vector<bool>(4,true));
    for(int i = 0;i<M;i++){
        ll a,b;
        cin >> a >> b;
        a--;b--;
        graph[a].emplace_back(b);graph[b].emplace_back(a);
        hen[a]++;hen[b]++;
    }
    priority_queue<pair<ll,ll>>pq;
    for(int i = 0;i<N;i++)if(hen[i]==3)pq.emplace(0,i);
    while(true){
        if(pq.empty())break;
        auto[cnt,vertex] = pq.top();
        pq.pop();
        if(ans[vertex]!=-1)continue;
        ll x = -1;
        for(int i = 0;i<4;i++)if(valid[vertex][i])x=i;
        ans[vertex]=x;
        for(int i = 0;i<graph[vertex].size();i++){
            ll p = graph[vertex][i];
            if(p==-1)continue;
            hen[p]--;
            hen[vertex]--;
            for(int ii = 0;ii<graph[p].size();ii++){
                if(graph[p][ii]==vertex){
                    graph[p][ii]=-1;
                    break;
                }
            }
            invalidcnt[p]++;
            valid[p][x]=false;
            pq.emplace(invalidcnt[p],p);
        }
    }
    cout << "Yes" << "\n";
    for(int i = 0;i<N;i++)cout << ans[i]+1 << " ";
    cout << "\n";
}
0