結果

問題 No.3056 Disconnected Coloring
ユーザー wsrtrt
提出日時 2025-03-14 23:06:47
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 2,243 bytes
コンパイル時間 3,489 ms
コンパイル使用メモリ 278,956 KB
実行使用メモリ 7,328 KB
最終ジャッジ日時 2025-03-14 23:07:04
合計ジャッジ時間 10,496 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 28 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto&i:a)
#define ff first 
#define ss second 
#define pb push_back 
#define all(a) begin(a),end(a)
using vi=vector<int>;
using vll=vector<long long>;
using ll=long long;
using pii=pair<int,int>;
using pll=pair<long long,long long>;
inline bool ingrid(int a,int b,int h,int w){
    return 0<=a&&a<h&&0<=b&&b<w;
}
int n,m;
vi u,v;
void solve(){
    if(m&1){
        cout<<-1<<endl;
        return;
    }
    vector<int> deg(n);
    rep(i,0,m){
        if(pii(u[i],v[i])==pii(0,n-1)){
            cout<<-1<<endl;
            return;
        }
        deg[u[i]]++;
        deg[v[i]]++;
    }
    vector<int> ans(m,-1);
    if(max(deg.front(),deg.back())<=m/2){
        vi cnt(2);
        rep(i,0,m){
            if(u[i]==0){
                cnt[0]++;
                ans[i]=0;
            }
            if(v[i]==n-1){
                cnt[1]++;
                ans[i]=1;
            }
        }
        rep(i,0,m){
            if(ans[i]!=-1)continue;
            if(cnt[0]<m/2){
                cnt[0]++;
                ans[i]=0;
            }else{
                cnt[1]++;
                ans[i]=1;
            }
        }
    }
    else{
        vi cnt(2);
        if(deg[0]<=m/2){
            rep(i,0,m){
                if(u[i]==0){
                    ans[i]=0;
                    cnt[0]++;
                }
            }
        }else{
            rep(i,0,m){
                if(v[i]==n-1){
                    ans[i]=0;
                    cnt[0]++;
                }
            }
        }
        rep(i,0,m){
            if(u[i]!=0&&v[i]!=n-1){
                cnt[1]++;
                ans[i]=1;
            }
        }
        rep(i,0,m){
            if(ans[i]!=-1)continue;
            if(cnt[0]<m/2){
                cnt[0]++;
                ans[i]=0;
            }else {
                cnt[1]++;
                ans[i]=1;
            }
        }
    }
    rep(i,0,m){
        cout<<(ans[i]?'B':'R');
    }
    cout<<endl;

}
int main(){
    cin>>n>>m;
    u.resize(m);v.resize(m);
    rep(i,0,m){
        cin>>u[i]>>v[i];u[i]--;v[i]--;
    }
    solve();
    return 0;
}
/*

*/
0