比赛 csp2025模拟练习1 评测结果 AWWWWAWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWAWWWWWWWWWWWWW
题目名称 彩色道路 最终得分 6
用户昵称 梦那边的美好ME 运行时间 5.371 s
代码语言 C++ 内存使用 22.45 MiB
提交时间 2025-10-28 11:07:11
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int mAXn=200005;

ll n,m;
vector<pair<ll,ll>> s[210000];
ll u[210000],v[210000];
char color[210000];
ll vis[210000],fa[210000],dep[210000];

int main(){
	freopen("paintoads.in","r",stdin);
	freopen("paintoads.out","w",stdout); 
	ios::sync_with_stdio(0);cin.tie(0);
	cin>>n>>m;
	for (int i=0;i<m;i++){
		cin>>u[i]>>v[i];
		s[u[i]].push_back(make_pair(v[i],i));
		s[v[i]].push_back(make_pair(u[i],i));
		color[i]='G';
	}
	for (int i=1;i<=n;i++){
		if (!vis[i]){
			queue<ll> q;
			q.push(i);
			vis[i]=1;
			dep[i]=0;
			fa[i]=-1;
			while (!q.empty()){
				ll u=q.front();q.pop();
				for (auto &e:s[u]){
					ll v=e.first;
					ll id=e.second;
					if (v==fa[u]) continue;
					if (!vis[v]){
						vis[v]=1;
						fa[v]=u;
						dep[v]=dep[u]+1;
						if (dep[v]%2==0) color[id]='R';
						else color[id]='B';
						q.push(v);
					}else{
						if ((dep[u]%2)==(dep[v]%2)){
							if (dep[u]%2==0) color[id]='R';
							else color[id]='B';
						}
					}
				}
			}
		}
	}
	for (int i=0;i<m;i++) cout<<color[i];
    cout<<'\n';
    return 0;
}