游历校园 [COGS 614] [欧拉图]
Description
刷完牙洗完脸,黄黄同学就要上课去了。可是黄黄同学每次去上课时总喜欢把校园里面的每条路都走一遍,当然,黄黄同学想每条路也只走一遍。我们一般人很可能对一些地图是办不到每条路走一遍且仅走一遍的,但是黄黄同学有个传送机,他可以任意地将一个人从一个路口传送到任意一个路口。
可是,每传送一次是需要耗费巨大的内力的,黄黄同学希望可以用最少的传送次数完成游遍校园,你能帮助他吗 ?
因为黄黄同学只是游历校园,于是我们可以认为黄黄同学可以从任意点开始,到任意点结束。
Input
第一行有一个整数 N ,表示黄黄的校园里一共有多少路口。
第二行有一个整数 M ,表示路口之间有 M 条路。
后面 M 行每行两个整数 a 、 b 表示 a 与 b 之间有一条路,且路是双向的。
Output
只包括一个整数 s ,表示黄黄同学最少的传送次数。
Sample Input
3
2
1 2
2 3
Sample Output
0
Hint
数据范围:
对于 100 %的数据,保证 N ≤ 100000 , K ≤ 500000 , 1 ≤ a , b ≤ N 。
Solution
请教了数学组的大佬后才会做的...
对于一个连通块,要完成「一笔画」,度数为寄的点只能为0或2个,而跳一次相当于连一条边。消除两个寄点
所以当一个连通块寄点数为x>2时,要化成2个时,加的边(跳的次数)=(x-2)/2
所以bfs解决连通块就行了
但是注意!无度数的点不要考虑,因为没有边要遍历。
Code
1 #include<queue> 2 #include<vector> 3 #include<cstdio> 4 #include<cstring> 5 #include<iostream> 6 #include<algorithm> 7 #define RG register int 8 #define rep(i,a,b) for(RG i=a;i<=b;i++) 9 #define per(i,a,b) for(RG i=a;i>=b;i--) 10 #define add(x,y) e[++cnt].v=y,e[cnt].next=head[x],head[x]=cnt 11 #define inf (1<<30) 12 #define maxn 100005 13 #define maxm 500005 14 using namespace std; 15 int n,m,sid,cnt,ans; 16 int head[maxn],vis[maxn],deg[maxn]; 17 vector<int> vec[maxn]; 18 struct E{ 19 int v,next; 20 }e[maxm<<1]; 21 inline int read() 22 { 23 int x=0,f=1;char c=getchar(); 24 while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} 25 while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} 26 return x*f; 27 } 28 29 void bfs(int x) 30 { 31 int sum=0; 32 queue<int> que; 33 que.push(x),vis[x]=1; 34 RG u,v; 35 while(!que.empty()) 36 { 37 u=que.front(),que.pop(); 38 if(deg[u]&1) ++sum; 39 for(RG i=head[u];i;i=e[i].next) 40 { 41 v=e[i].v; 42 if(!vis[v]) 43 vis[v]=1,que.push(v); 44 } 45 } 46 if(sum>2) ans+=(sum-2)>>1; 47 } 48 49 int main() 50 { 51 52 n=read(),m=read(); 53 RG u,v;rep(i,1,m) u=read(),v=read(),add(u,v),add(v,u),++deg[u],++deg[v]; 54 rep(i,1,n) if(!vis[i]&°[i]>0) bfs(i),ans++; 55 cout<<ans-1; 56 return 0; 57 }
>>点击查看代码<<
转载于:https://www.cnblogs.com/ibilllee/p/8718378.html
游历校园 [COGS 614] [欧拉图]相关推荐
- 网易2018校园招聘:游历魔法王国 [python]
''' [编程题] 游历魔法王国 时间限制:1秒 空间限制:32768K 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当 ...
- 网易2018校园招聘编程题
[编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0) ...
- 数据结构课程设计---赛事统计,校园导航,算术表达式
文章目录 目录 项目一:计算机设计大赛赛事统计 一.内容与相关要求: 二.问题分析和任务定义: 三.数据结构的选择和概要设计; 3.1 数据结构的选择 3.2 概要设计 3.2.1 功能函数的设计 四 ...
- 基于SSM的校园疫情防控系统的设计与实现
word完整版可点击如下下载>>>>>>>> 基于SSM的校园疫情防控系统的设计与实现.rar_基于ssm的疫-互联网文档类资源-CSDN下载内容包括详 ...
- 别找了,完整代码在这||校园导游咨询系统
juster数据结构实验2:校园导游咨询系统(附完整代码) 文章目录 juster数据结构实验2:校园导游咨询系统(附完整代码) 1.项目概述 1.1项目目标和主要内容 2.1[测试数据] 3.1[实 ...
- 校园导航-南邮仙林校区
校园导航.游览模式设计 课题内容和要求 课题需求分析 相关数据结构及算法设计 主要的数据结构 主要算法流程 源程序代码 (部分) 测试数据及其结果 本课题采用C++语言,利用图形化工具Qt5.8.0设 ...
- 智慧校园信息化管理系统的方案设计与实施
作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 一,项目简介 本项目作为母校信 ...
- 广播站 PHP,让一实听见你的声音——“校园之声”广播站招募小记
为增添校园广播站的新鲜血液,进一步丰富校园文化生活,我校"校园之声"广播站在9月伊始启动了招贤纳新活动. 本次招贤纳新活动共招募播音员14名, 9月16日开始报名,通过笔试和面试的 ...
- 科益展机器人_Smartguy robotics 2021年校园领军(实习)精英计划
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Smartguy robotics 2021年校园领军(实习)精英计划 关于科益展机器人 科益展机器人(Smartguy robotics Co.,tld ...
最新文章
- MPB:白酒酒醅非破坏性连续采集与核酸提取
- 理解这几张图,你就是js小牛了
- 5G加速下的云办公时代来临?阿里云新品服务器 - 无影云桌面的服务开通与体验,本地客户端连接阿里云无影云桌面演示
- BZOJ 4066 简单题 ——KD-Tree套替罪羊树
- Python3的迭代器
- 2021qq服务器维护到什么时候,2021QQ扩列下架了吗怎么没了?QQ暂停服务到什么时候...
- Dev C++使用简明教程
- android ukey,Tenorshare 4uKey for Android
- 4×4键盘板:ATMEGA328接口
- linux能虚拟化windows,在Linux和Windows下查看CPU是否支持虚拟化的方法
- Mouse Without Borders 使用经验
- 2021年社招字节跳动测试开发工程师面试题
- 【thinkphp 基础 3】配合phpstudy进行验证码拓展安装
- 区块链报告会心得体会3000_区块链讲座观后感6
- Git超详解七 储藏 (看不懂算我输)
- phhphphphphphphp转自 细雪之舞 专注DEV
- 谷歌浏览器 android 55,谷歌浏览器55稳定版|谷歌浏览器(Chrome 55稳定版)下载v55.0.2883.87官方正式版 - 欧普软件下载...
- 基于Docker离线部署开源视频会议系统Jitsi-Meet
- 思维导图 - 学习/实践
- python应用程序无法正常启动0xc00007b_详细教您解决应用程序无法正常启动(0xc000007b)...