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

}
相关推荐
努力学计算机的小白一枚几秒前
146. LRU 缓存 && 带TTL的LRU缓存实现(拓展)
算法·缓存
uhakadotcom3 分钟前
DeepFM算法:提升CTR预估和推荐系统的强大工具
算法·面试·github
evolution_language19 分钟前
LintCode第974题-求矩阵各节点的最短路径(以0为标准)
算法·最短路径·广度优先搜索
序属秋秋秋25 分钟前
算法基础_基础算法【位运算 + 离散化 + 区间合并】
c语言·c++·学习·算法·蓝桥杯
Phoebe鑫31 分钟前
数据结构每日一题day10(链表)★★★★★
算法
jyyyx的算法博客37 分钟前
【再探图论】深入理解图论经典算法
c++·算法·图论
念_ovo1 小时前
【算法/c++】利用中序遍历和后序遍历建二叉树
数据结构·c++·算法
梭七y1 小时前
【力扣hot100题】(048)二叉树的最近公共祖先
算法·leetcode·职场和发展
luckyme_1 小时前
leetcode-代码随想录-链表-移除链表元素
算法·leetcode·链表
Vitalia1 小时前
⭐算法OJ⭐寻找最短超串【动态规划 + 状态压缩】(C++ 实现)Find the Shortest Superstring
开发语言·c++·算法·动态规划·动态压缩