P10298 [CCC 2024 S4] Painting Roads(dfs给边染色)

P10298 [CCC 2024 S4] Painting Roads - 洛谷 | 计算机科学教育新生态

思路: 因为一条路径上的相邻两条边颜色得不同,所以我们可以通过深搜根据搜到的层数奇偶性来染色,没染色的就是灰色,同时对搜过的点进行标记,由于道路可能不是联通的,所以我们需要遍历每一个点,如果该点没有搜过就进行dfs。

Code:

cpp 复制代码
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";
   }

}
相关推荐
BUG收容所所长25 分钟前
栈的奇妙世界:从冰棒到算法的华丽转身
前端·javascript·算法
愚润求学27 分钟前
【C++】类型转换
开发语言·c++
XRZaaa31 分钟前
常见排序算法详解与C语言实现
c语言·算法·排序算法
@我漫长的孤独流浪35 分钟前
数据结构测试模拟题(4)
数据结构·c++·算法
智驱力人工智能38 分钟前
智慧零售管理中的客流统计与属性分析
人工智能·算法·边缘计算·零售·智慧零售·聚众识别·人员计数
csdnzzt1 小时前
从内存角度透视现代C++关键特性
c++
jie188945758661 小时前
C++ 中的 const 知识点详解,c++和c语言区别
java·c语言·c++
明月*清风1 小时前
c++ —— 内存管理
开发语言·c++
WindSearcher2 小时前
大模型微调相关知识
后端·算法
取酒鱼食--【余九】2 小时前
rl_sar实现sim2real的整体思路
人工智能·笔记·算法·rl_sar