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";
   }

}
相关推荐
NAGNIP20 分钟前
一文搞懂树模型与集成模型
算法·面试
NAGNIP26 分钟前
万字长文!一文搞懂监督学习中的分类模型!
算法·面试
技术狂人16829 分钟前
工业大模型工程化部署实战!4 卡 L40S 高可用集群(动态资源调度 + 监控告警 + 国产化适配)
人工智能·算法·面试·职场和发展·vllm
D_FW41 分钟前
数据结构第六章:图
数据结构·算法
a程序小傲1 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
HellowAmy1 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
自学不成才2 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘
June`2 小时前
全排列与子集算法精解
算法·leetcode·深度优先
徐先生 @_@|||2 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构