Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数。
n,m≤5e3n,m\le5e3n,m5e3

思路:

经过分析不难发现,我们最多用两种颜色,如果要用两种颜色当且仅当这个图存在环,否则一种颜色即可。
我们可以直接跑一个dfsdfsdfs树,让后再上面判环,如果是非树边再看一下是否再dfsdfsdfs树上,在的话就构成环,染成222颜色即可。否则就染为111
还可以直接根据拓扑来判断环,如果有环那么u<vu<vu<v的时候染111u>vu>vu>v的时候染222即可,可以证明一个环内的ididid肯定不是严格递增,所以一定会有两种不同颜色。

// Problem: D. Coloring Edges
// Contest: Codeforces - Educational Codeforces Round 72 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1217/problem/D
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,M=N*2,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
vector<PII>v[N];
int col[N],d[N],dfn[N],idx;
bool flag;void dfs(int u,int st) {dfn[u]=1;for(auto x:v[u]) {if(dfn[x.X]==0) col[x.Y]=1,dfs(x.X,u);else if(dfn[x.X]==2) col[x.Y]=1;else col[x.Y]=2,flag=true;}dfn[u]=2;
}int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);	scanf("%d%d",&n,&m);for(int i=1;i<=m;i++) {int a,b; scanf("%d%d",&a,&b);v[a].pb({b,i}); }for(int i=1;i<=n;i++) if(!dfn[i]) {dfs(i,0);}	if(flag) puts("2");else puts("1");for(int i=1;i<=m;i++) printf("%d ",col[i]);puts("");return 0;
}
/**/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

在上一个小系列文章《ASP.NET Core on K8S学习初探》中&#xff0c;通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境&#xff0c;并初步尝试将ASP.NET Core WebAPI项目部署到了K8S&#xff0c;把玩了一下快速部署和实例伸缩。这个系列开始&#xff0c;会继续学…

2020 区域赛(沈阳) M. United in Stormwind fwt + sosdp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 有nnn个试卷&#xff0c;每个试卷有mmm个问题&#xff0c;每个问题有两个选项a,ba,ba,b&#xff0c;定义两个试卷不同当且仅当其选中的问题中有一个问题不同。现在问你对于mmm个问题的所有子集&#xff0c;有…

邻值查找—算法进阶指南

邻值查找 给定一个长度为 n 的序列 A&#xff0c;A 中的数各不相同。对于 A 中的每一个数 Ai&#xff0c;求&#xff1a; min1≤j<i|Ai−Aj| 以及令上式取到最小值的 j&#xff08;记为 Pi&#xff09;。若最小值点不唯一&#xff0c;则选择使 Aj 较小的那个。 输入格式 …

我眼中的 NCC,WTM 寻亲之旅

峥嵘岁月如谢花流水&#xff0c;三朝五帝如散雾云海。开发语言更迭如此。我们所坚持的&#xff0c;只是那最初的感动&#xff0c;那“只是在人群中多看了你一眼”的惊艳。三十年河东&#xff0c;三十年河西&#xff0c;不忘初心&#xff0c;方得始终&#xff01;嗯&#xff0c;…

Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory 思维 + dp

文章目录题意&#xff1a;思路题意&#xff1a; 思路 一开始找规律&#xff0c;表都打好了&#xff0c;没找出来。。 找规律还是适合让队友来。 先考虑第一行&#xff0c;我们先计算第一行的方案数&#xff0c;设f[i][j]f[i][j]f[i][j]表示到了iii位&#xff0c;第iii位的颜色…

国王游戏

国王游戏 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。 首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。 然后,让这 n 位大臣排成一排,国王站在队伍的最前面。 排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金…

Wtm携手LayUI -- .netcore 开源生态我们是认真的!

经过WTM团队和LayUI团队多次深入协商&#xff0c;双方于2019年7月29日在北京中国国际展览中心正式达成战略合作意向&#xff0c;双方签署了战略合作框架协议&#xff0c;LayUI团队承诺使用WTM框架的任何项目都可以免费使用其收费版的后台模板&#xff0c;WTM团队则从受捐助款项…

Codeforces Round #305 (Div. 1) D. Mike and Fish 欧拉回路

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 欧拉回路经典题。 将其转换成图上问题&#xff0c;对于横纵坐标我们将其分开&#xff0c;对于(x,y)(x,y)(x,y)我们将其横纵坐标连一个无向边&#xff0c;现在问题就转换成了我们需要对每条…

经典二分:秦腾与教学评估

秦腾与教学评估 题面描述 在秦腾进入北京大学学习的第一个学期&#xff0c;就不幸遇到了前所未有的教学评估。在教学评估期间&#xff0c;同学们被要求八点起床&#xff0c;十一点回宿舍睡觉&#xff0c;不准旷课&#xff0c;上课不准迟到&#xff0c;上课不准睡觉……甚至连著…

高性能动态编译库Natasha发布1.0版本!

一、 前言对于开源贡献者&#xff0c;Emit和表达式树不是陌生的字眼&#xff0c;IL的动态特性为封装工作带来了极大的方便&#xff0c;会Emit的开发者可以说驾驭了大部分的高性能、高动态的编程技巧。纵观ef、dapper、json.net等第三方常用库&#xff0c;哪个能脱离emit而独善其…

Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑对于线段&#xff0c;如何建模。 我们考虑先将线段转换成左闭右开的形式&#xff0c;将左右点连起来。 再考虑每个点&#xff0c;将所有离散化后的点拿出来&#xff0c;每个点都有一个…

最大子序和:单调队列维护一个上升序列

最大子序和 输入一个长度为n的整数序列&#xff0c;从中找出一段长度不超过m的连续子序列&#xff0c;使得子序列中所有数的和最大。 注意&#xff1a; 子序列的长度至少是1。 输入格式 第一行输入两个整数n,m。 第二行输入n个数&#xff0c;代表长度为n的整数序列。 同一行…

微软.Net Core 3.0 预览版7发布:大幅减少 SDK 空间大小

据悉&#xff0c;这个预览版是 .Net Core 3 中重要的版本&#xff0c;可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话&#xff09;&#xff0c;故可在生产环境进行开发和部署。Windows, macOS 和 Linux 版本的Download .NET …

2016-2017 Central Europe Regional Contest Hangar Hurdles 克鲁斯卡尔重构树 + 建图

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 有一个n∗nn*nn∗n的网格图&#xff0c;有若干位置有障碍&#xff0c;有qqq个询问&#xff0c;每次询问给出两个点坐标x1,y1,x2,y2x1,y1,x2,y2x1,y1,x2,y2,询问把一个正方形箱子从x1,x2x1,x2x1,x2推到y1,y2y…

5门可能衰落的编程语言

专注于为北美地区的科技专业人士提供行业见解和分析&#xff0c;以及提供求职消息的技术职业消息服务网站 Dice Insights 近日发表了一篇题为《5 Programming Languages That Are Probably Doomed》的文章。作者主要根据 TIOBE 和 RedMonk 这两个编程语言排行榜&#xff0c;以及…

POJ3320 Jessica's Reading Problem 尺取法

Jessica’s Reading Problem、 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22716 Accepted: 7687 Description Jessica’s a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is coming, yet she has spent little …

#2686. 「BalticOI 2013」雪地足迹 双端队列01bfs + 模型转换

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个n∗mn*mn∗m的图&#xff0c;如果某个位置字符为RRR代表兔子走过&#xff0c;如果为FFF代表狐狸走过&#xff0c;如果...代表谁都没走过&#xff0c;每只动物必须从左上角进来&#xff0c;右下角出去…

.NET加水印/验证码的NuGet包

.NET加水印/验证码的NuGet包 我的在前两篇文章中&#xff0c;我介绍了使用Direct2D给图片加水印/验证码&#xff0c;今天我将其进行了封装&#xff0c;发布了一个NuGet包Sdcb.Imaging&#xff1a;<PackageReference Include"Sdcb.Imaging" Version"1.1.0&quo…

hdu1686:KMP板子

题目链接 题目大意就是给你两个字符串&#xff0c;求出第一个字符串在第二个字符串中出现的次数。 如果我们暴力匹配的话&#xff0c;复杂度是 len(first) * len(second) 对于题目给的 1e4 * 1e6 显然暴力不可取&#xff0c; 这里就用到 KMP 。 说到 KMP 最难理解的就是 next…

集群故障处理之处理思路以及健康状态检查(三十三)

前言 按照笔者的教程&#xff0c;大家应该都能够比较顺畅的完成k8s集群的部署&#xff0c;不过由于环境、配置以及对Linux、k8s的不了解会导致很多问题、异常和故障&#xff0c;这里笔者分享一些处理技巧和思路&#xff0c;以及部分常见的问题&#xff0c;以供大…