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