P10298 [CCC 2024 S4] Painting Roads(dfs给边染色)
P10298 [CCC 2024 S4] Painting Roads - 洛谷 | 计算机科学教育新生态
思路: 因为一条路径上的相邻两条边颜色得不同,所以我们可以通过深搜根据搜到的层数奇偶性来染色,没染色的就是灰色,同时对搜过的点进行标记,由于道路可能不是联通的,所以我们需要遍历每一个点,如果该点没有搜过就进行dfs。
Code:
constexpr int N=2e5+5,mod=1e9+7;
#define fi first
#define se second
int n,m;
vector<PII> e[N];
bool st[N];
int color[N];
void dfs(int u,int c)
{
st[u]=true;
for(auto [v,id]:e[u])
{
if(st[v]) continue;
color[id]=c%2;
dfs(v,c+1);
}
}
void solve()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
color[i]=-1;
int a,b;cin>>a>>b;
e[a].push_back({b,i});
e[b].push_back({a,i});
}
for(int i=1;i<=n;i++)
{
if(!st[i])
{
dfs(i,0);
}
}
for(int i=1;i<=m;i++)
{
if(color[i]==0)
{
cout<<"B";
}
else if(color[i]==1) cout<<"R";
else cout<<"G";
}
}
原文地址:https://blog.csdn.net/2302_79372568/article/details/144163106
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!