| 比赛 | csp2025模拟练习1 | 评测结果 | AAWWAWWWWWAAAAAAAAAAWWWWWWWWWWAAAAWWWWWWWWWWWWWWWA | 
    | 题目名称 | 彩色道路 | 最终得分 | 36 | 
    | 用户昵称 | 我常常追忆未来 | 运行时间 | 9.036 s | 
    | 代码语言 | C++ | 内存使用 | 20.63 MiB | 
    | 提交时间 | 2025-10-28 10:25:38 | 
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+7;
vector<int>G[N];
int n,m,vis[N],col[N];
map<pair<int,int>,int>mp;
void dfs(int u,int fa,int lastcol){
    for(auto v:G[u]){
        if(v!=fa&&vis[v]!=1){
            vis[v]=1;
            if(lastcol==2){
                col[mp[make_pair(u,v)]]=1;
                dfs(v,fa,1);
            }
            else{
                col[mp[make_pair(u,v)]]=2;
                dfs(v,fa,2);
            }
        }
    }
}
int main(){
    freopen("paintoads.in","r",stdin);
    freopen("paintoads.out","w",stdout);
    cin>>n>>m;
    srand(time(0));
    if(n==m){
        for(int i=1;i<=n;i++){
            int u,v;
            cin>>u>>v;
            G[u].push_back(v);
            G[v].push_back(u);
            mp[make_pair(u,v)]=i;
            mp[make_pair(v,u)]=i;
        }
        dfs(1,0,0);
        for(int i=1;i<=n;i++){
            if(col[i]==0){
                cout<<"G";
            }
            else if(col[i]==2){
                cout<<"R";
            }
            else if(col[i]==1){
                cout<<"B";
            }
        }        
    }
    else{
        for(int i=1;i<=m;i++){
            col[i]=rand()%3;
        }
        for(int i=1;i<=m;i++){
            if(col[i]==0){
                cout<<"G";
            }
            else if(col[i]==2){
                cout<<"R";
            }
            else if(col[i]==1){
                cout<<"B";
            }
        }           
    }
    
    return 0;
}