結果

問題 No.3552 Triangular Coloring
コンテスト
ユーザー yimiya(いみや)
提出日時 2026-05-04 23:14:28
言語 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,277 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,783 ms
コンパイル使用メモリ 349,620 KB
実行使用メモリ 48,604 KB
最終ジャッジ日時 2026-05-22 21:48:12
合計ジャッジ時間 9,297 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 16 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;//63bit型整数型
int main(){
ll N,M;
cin >> N >> M;
vector<vector<ll>>graph(N,vector<ll>(0));
vector<ll>hen(N);
vector<ll>ans(N,-1);
vector<vector<bool>>valid(N,vector<bool>(4,true));
vector<ll>invalid(N,0);
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;
            break;
        }
    }
    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;
            }
        }
        invalid[p]++;
        valid[p][x]=false;
        pq.emplace(invalid[p],p);
    }
}
cout << "Yes" << "\n";
for(int i = 0;i<N;i++)cout << ans[i]+1 << " ";
cout << "\n";
}
0