比赛 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;
}