| 记录编号 |
608631 |
评测结果 |
AAAAAAWWWAAAAAAAAAAAAAAAAAAAAWAAAAAAAAWWWWWWWWWWWA |
| 题目名称 |
4183.彩色道路 |
最终得分 |
70 |
| 用户昵称 |
会挽弯弓满月 |
是否通过 |
未通过 |
| 代码语言 |
C++ |
运行时间 |
2.901 s |
| 提交时间 |
2025-10-28 15:28:47 |
内存使用 |
10.64 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
struct node{
int to,nxt,id;
}e[N<<1];
int h[N],tot;
void add(int u,int v,int id){
e[++tot]={v,h[u],id};
h[u]=tot;
return;
}
int n,m;
bool vis[N];
int co[N];
void dfs(int u,int color){
vis[u]=1;
int v,id;
for(int i=h[u];i;i=e[i].nxt){
v=e[i].to;id=e[i].id;
if(vis[v]) continue;
co[id]=color;
dfs(v,color^1);
}
return;
}
void solve(){
memset(co,-1,sizeof(co));
for(int i=1;i<=n;i++){
if(vis[i]) continue;
dfs(i,0);
}
for(int i=1;i<=m;i++){
if(co[i]==0) putchar('B');
else if(co[i]==1) putchar('R');
else putchar('G');
}
return;
}
int main(){
freopen("paintoads.in","r",stdin);
freopen("paintoads.out","w",stdout);
scanf("%d%d",&n,&m);
int u,v;
for(int i=1;i<=m;i++){
scanf("%d%d",&u,&v);
add(u,v,i);add(v,u,i);
}
solve();
return 0;
}