[BZOJ]1064 [NOI2008] 假面舞会 dfs判环

[NOI2008] 假面舞会 如果整个图没有环,且不存在两条共用起点和终点的相交链,显然最多能分的种类数是每个连通分量内最长链的长度之和。 如果整个图是由若干个不相交的环构成的话,最多能分的种类数是所有环长度的最大公约数(找环的时候,可以从连通块内的任意一点开始编号,第二次经过一个点的时候,它第二次的编号减去第一次的编号就是环的大小)。 除了这两种特殊情况之外,还有两种情况: 两个环之间有公共部分(指至少共用两个点)。 存在两个链共用起点和终点。 对于情况 1,合法的面具数一定是这两个环长度的公约数。 对于情况 2,合法的面具 阅读详情

1064: [Noi2008]假面舞会

Time Limit: 10 Sec   Memory Limit: 162 MB
Submit: 2160   Solved: 1047
[ Submit][ Status][ Discuss]

Description

一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号,戴第k 类面具的人能看到戴第1 类面具的人的编号。 参加舞会的人并不知道有多少类面具,但是栋栋对此却特别好奇,他想自己算出有多少类面具,于是他开始在人群中收集信息。 栋栋收集的信息都是戴第几号面具的人看到了第几号面具的编号。如戴第2号面具的人看到了第5 号面具的编号。栋栋自己也会看到一些编号,他也会根据自己的面具编号把信息补充进去。由于并不是每个人都能记住自己所看到的全部编号,因此,栋栋收集的信 息不能保证其完整性。现在请你计算,按照栋栋目前得到的信息,至多和至少有多少类面具。由于主办方已经声明了k≥3,所以你必须将这条信息也考虑进去。

Input

第一行包含两个整数n, m,用一个空格分隔,n 表示主办方总共准备了多少个面具,m 表示栋栋收集了多少条信息。接下来m 行,每行为两个用空格分开的整数a, b,表示戴第a 号面具的人看到了第b 号面具的编号。相同的数对a, b 在输入文件中可能出现多次。

Output

包含两个数,第一个数为最大可能的面具类数,第二个数为最小可能的面具类数。如果无法将所有的面具分为至少3 类,使得这些信息都满足,则认为栋栋收集的信息有错误,输出两个-1。

Sample Input

【输入样例一】

6 5
1 2
2 3
3 4
4 1
3 5

【输入样例二】

3 3
1 2
2 1
2 3

Sample Output

【输出样例一】
4 4

【输出样例二】
-1 -1

HINT

100%的数据,满足n ≤ 100000, m ≤ 1000000。

Source

[ Submit][ Status][ Discuss]


HOME Back

题解:Click

#include<stdio.h>
#include<cmath>
#include<cstring>
#include<algorithm>
#define clear(a) memset(a, 0, sizeof(a))
using namespace std;
const int maxn = 200005;
int ans, n, m, num(1), mx, mn;
bool vis[maxn], mark[maxn * 20];
int dis[maxn], h[maxn];
struct edge{ int nxt, v, w;}e[maxn * 20];
inline void add(int u, int v, int w){
	e[++num].v = v, e[num].nxt= h[u], e[num].w = w, h[u] = num;
}
int gcd(int a, int b){
	return (!b) ? a : gcd(b, a % b);
}
void dfs_chain(int u){
	mx = max(mx, dis[u]);
	mn = min(mn, dis[u]);
	vis[u] = true;
	for(int i = h[u]; i; i = e[i].nxt)
		if(!mark[i]){
			mark[i] = mark[i ^ 1] = true;
			int v = e[i].v;
			dis[v] = dis[u] + e[i].w, dfs_chain(v);
		}
}
void dfs_cir(int u){
	vis[u] = true;
	for(int i = h[u]; i; i = e[i].nxt){
		int v = e[i].v;
		if(vis[v]) ans = gcd(ans, abs(dis[u] + e[i].w - dis[v]));
		else dis[v] = dis[u] + e[i].w, dfs_cir(v);
	}
}
int main(){
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= m; ++i){
		int x, y;
		scanf("%d%d", &x, &y);
		add(x, y, +1), add(y, x, -1);
	}
	for(int i = 1; i <= n; ++i)
		if(!vis[i]) dfs_cir(i);
	if(ans){
		if(ans < 3) puts("-1 -1");
		else{
			for(int i = 3; i <= ans; ++i)
				if(!(ans % i)){
					printf("%d %d\n", ans, i);
					break;
				}
		}
		return 0;
	}
	clear(vis);
	for(int i = 1; i <= n; ++i)
		if(!vis[i]){
			mx = mn = dis[i] = 0;
			dfs_chain(i);
			ans += mx - mn + 1;
		}
	if(ans < 3) puts("-1 -1");
	else printf("%d %d\n", ans, 3);
	return 0;
}



【BZOJ 1064】【NOI 2008】假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号,戴第k 阅读详情

相关推荐

Ansys EMC Plus:用于仿真屏蔽效果的一键式工作流程

在 EMA3D 选项卡下,单击 Shielding Effectiveness 按钮下方的箭头以访问设置并使用所需数量的分割数启动工作流程,这些分割数定义了网格大小。在此示例中,设置了 35 个分段,提供了良好的 FDTD 网格,同时保持了较短的仿真运行时间。接下来,选择默认的平面波源文件,然后选择所需的分析方向。您还可以查看和调整仿真树中的仿真参数,包括定义最低和最高频率值的解域、入射平面波的极化以及探针设置。您可以控制屏蔽效果图设置,并以线性比例显示结果。仿真完成后,软件将绘制与频率相关的屏蔽效果图。

jkh920184196的博客 872

BZOJ 1064 假面舞会(图论-连通分量)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1064 题意:一年一度的假面舞会又开始了,栋栋也 兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊...

weixin_34396103的博客 188

STMCubeMX使用TB6612驱动编码轮并进行测速

TB6612电机驱动模块通过IN1和IN2引脚控制电机的旋转方向,并通过PWM信号的占空比调节电机速度。代码示例展示了如何使用GPIO控制电机的正反转,以及如何动态调整PWM占空比实现速度控制。系统设计中,TB6612与编码减速电机连接,STM32CubeMX用于初始化GPIO和PWM输出。编码器接口配置使用TIM3进行测速,TIM4定时器用于速度计算。Keil软件中编写的代码包括编码轮计数值获取、速度计算、电机正反转控制以及小车运动控制等功能。通过OLED显示速度,并实现电机的调试与测试。

wwivn的博客 2262

[Noi2008]假面舞会(dfs判环)

[Noi2008]假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为kkk (kkk≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第iii 类面具的...

lvmaooi的博客 600

cmu15445 2023fall project4 详细过程(包括Bonus Tasks) Concurrency Control

CMU15-445 23fall project 4详解

LA的博客 1606

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

bzoj 1064: [Noi2008]假面舞会

Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号

lqybzx的专栏 866

系统架构设计师备考攻略

计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试。 软考没有学历、专业、年龄、相关工作经验要求,你可以根据自身选择合适的去报名(也就是说你直接直接报高级),但是一次考试只能报一种。 计算机软件资格考试纳入全国专业技术人员职业资格证书制度的统一规划,实行统一大纲、统一试题、统一标准、统一证书的考试办法,每年举行两次。通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位聘任相应专业技术职务(助理工程师、工程师、高级工程师)。

帅次的博客 7177

BZOJ 1064 假面舞会(NOI2008) DFS判环

BZOJ 1064 假面舞会

DaD3zZ , To be a Beyonder! 612

最新Python爬虫实战(入门爬虫篇)——案例17:某天气网40天天气预报数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过分析某天气网的数据接口,成功实现了对40天天气预报数据的批量采集。抓包分析:利用浏览器开发者工具找到隐藏的JSONP数据接口,掌握URL构成规律。请求模拟:构造带有Referer和User-Agent的请求头,添加时间戳参数避免缓存,获取原始数据。数据解析:处理JSONP格式,去除前缀后使用json模块解析,提取所需字段并规范化日期格式。数据存储:利用pandas将结构化数据保存为Excel文件,便于后续分析和使用。动态数据接口的发现与分析JSONP数据的清洗与解析。

努力让自己发光,对的人才能迎着光而来 22万+

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1952

【BZOJ 1064】 [Noi2008]假面舞会

非常巧妙的图论~ 详细题解~

Regina8023 1438

通过实例讲解瀑布模型

在电子商城开发中,瀑布模型如同 “工业时代的流水线”—— 能通过标准化流程交付高质量、高合规性的系统,但也可能因缺乏灵活性而错失市场机会。其优势与缺点本质上源于同一核心特征:严格的阶段性与文档驱动。决策建议若开发传统型、长周期、需求固定的电子商城(如企业内部采购平台),可优先选择瀑布模型,并通过 “需求预验证 + 模块化设计” 降低风险;若开发创新型、短周期、需快速迭代的电商平台(如社交电商、跨境电商),建议采用敏捷模型或混合模型(如瀑布 + Scrum),平衡规范性与响应速度。

跟佟格湾一起学习计算机知识吧~ 271

[bzoj1064][NOI2008]假面舞会

1064: [Noi2008]假面舞会Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1580 Solved: 768 [Submit][Status][Discuss] Description一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。

Vampire 737

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【bzoj1064】【NOI2008】【假面舞会】【dfs】

Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号

sunshinezff的专栏 2737

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

BZOJ 1064 NOI2008 假面舞会

1064: [Noi2008]假面舞会 Time Limit:10 SecMemory Limit:162 MBSubmit:2284Solved:1101[Submit][Status][Discuss] Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择...

157

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【bzoj1064】 NOI2008 假面舞会 图论好题

膜太神计划正式启动,这道题不是平常的图论傻逼题,感觉还是值得一做的。第一眼感觉可能要用最短路什么的,然后想一想没有办法处理,那么我们考虑两种情况:当图中有环时,k必定是环长度的约数,那么答案就是全部环的最大公约数和最小的大于3的公约数,若最大公约数小于3则无解;当图中没有环时,k最大就是所有联通块最长链的和,这里的联通块是指把边建成双向后的联通块,最小就是3。 还有一个小问题,就是A->B,C-

Oxer的专栏 1654

bzoj1064 洛谷1477 NOI2008假面舞会

https://www.luogu.com.cn/problem/P1477 http://www.lydsy.com/JudgeOnline/problem.php?id=1064 想了一年,各种找环姿势,wa一个晚上,卧槽,这建个正反边就搞定了 得总结一下找最大环最小环的问题了,和dfs树的问题 晚上脑子不太清醒,摸了摸了 #include<bits/stdc++.h> using namespace std; const int maxl=1e5+10; const int

binarycopycode 320

BZOJ1064: [Noi2008]假面舞会

Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号

wxh010910 594

BZOJ1064【NOI2008】【假面舞会】

BZOJ1064【NOI2008】【假面舞会】Description一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才...

ykhrg的博客 428

BZOJ1064 NOI2008 假面舞会 图论

传送门 将一组关系\((A,B)\)之间连一条边,那么显然如果图中存在环长为\(len\)的环,那么面具的种数一定是\(len\)的因数。 值得注意的是这里环的关系除了\(A \rightarrow B \rightarrow C \rightarrow D \rightarrow A\)类型以外,\(A \rightarrow B \rightarrow C \rightarrow D + A...

weixin_30823833的博客 143

【BZOJ1064】[Noi2008]假面舞会 DFS树

【BZOJ1064】[Noi2008]假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i ...

weixin_30737433的博客 91

【BZOJ1064】[Noi2008]假面舞会【DFS】【分类讨论】

【题目链接】 以为要分层图...没思路,去看题解,膜拜proverbs【proverbs的题解】 /* Footprints In The Blood Soaked Snow */ #include #include using namespace std; const int maxn = 100005, maxm = 1000005; int n, m, head[max

BraketBN 501
上一篇: 10.9 NOIP[真] 背包 + 状压 + 单调栈 + 最短路
下一篇: [BZOJ]1123 [POI2008]BLO 割点
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值