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]&&deg[i]>0)    bfs(i),ans++;
55     cout<<ans-1;
56     return 0;
57 }

>>点击查看代码<<

转载于:https://www.cnblogs.com/ibilllee/p/8718378.html

游历校园 [COGS 614] [欧拉图]相关推荐

  1. 网易2018校园招聘:游历魔法王国 [python]

    ''' [编程题] 游历魔法王国 时间限制:1秒 空间限制:32768K 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当 ...

  2. 网易2018校园招聘编程题

    [编程题] 魔法币 时间限制:1秒 空间限制:32768K 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0) ...

  3. 数据结构课程设计---赛事统计,校园导航,算术表达式

    文章目录 目录 项目一:计算机设计大赛赛事统计 一.内容与相关要求: 二.问题分析和任务定义: 三.数据结构的选择和概要设计; 3.1 数据结构的选择 3.2 概要设计 3.2.1 功能函数的设计 四 ...

  4. 基于SSM的校园疫情防控系统的设计与实现

    word完整版可点击如下下载>>>>>>>> 基于SSM的校园疫情防控系统的设计与实现.rar_基于ssm的疫-互联网文档类资源-CSDN下载内容包括详 ...

  5. 别找了,完整代码在这||校园导游咨询系统

    juster数据结构实验2:校园导游咨询系统(附完整代码) 文章目录 juster数据结构实验2:校园导游咨询系统(附完整代码) 1.项目概述 1.1项目目标和主要内容 2.1[测试数据] 3.1[实 ...

  6. 校园导航-南邮仙林校区

    校园导航.游览模式设计 课题内容和要求 课题需求分析 相关数据结构及算法设计 主要的数据结构 主要算法流程 源程序代码 (部分) 测试数据及其结果 本课题采用C++语言,利用图形化工具Qt5.8.0设 ...

  7. 智慧校园信息化管理系统的方案设计与实施

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 一,项目简介 本项目作为母校信 ...

  8. 广播站 PHP,让一实听见你的声音——“校园之声”广播站招募小记

    为增添校园广播站的新鲜血液,进一步丰富校园文化生活,我校"校园之声"广播站在9月伊始启动了招贤纳新活动. 本次招贤纳新活动共招募播音员14名, 9月16日开始报名,通过笔试和面试的 ...

  9. 科益展机器人_Smartguy robotics 2021年校园领军(实习)精英计划

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Smartguy robotics 2021年校园领军(实习)精英计划 关于科益展机器人 科益展机器人(Smartguy robotics Co.,tld ...

最新文章

  1. MPB:白酒酒醅非破坏性连续采集与核酸提取
  2. 理解这几张图,你就是js小牛了
  3. 5G加速下的云办公时代来临?阿里云新品服务器 - 无影云桌面的服务开通与体验,本地客户端连接阿里云无影云桌面演示
  4. BZOJ 4066 简单题 ——KD-Tree套替罪羊树
  5. Python3的迭代器
  6. 2021qq服务器维护到什么时候,2021QQ扩列下架了吗怎么没了?QQ暂停服务到什么时候...
  7. Dev C++使用简明教程
  8. android ukey,Tenorshare 4uKey for Android
  9. 4×4键盘板:ATMEGA328接口
  10. linux能虚拟化windows,在Linux和Windows下查看CPU是否支持虚拟化的方法
  11. Mouse Without Borders 使用经验
  12. 2021年社招字节跳动测试开发工程师面试题
  13. 【thinkphp 基础 3】配合phpstudy进行验证码拓展安装
  14. 区块链报告会心得体会3000_区块链讲座观后感6
  15. Git超详解七 储藏 (看不懂算我输)
  16. phhphphphphphphp转自 细雪之舞 专注DEV
  17. 谷歌浏览器 android 55,谷歌浏览器55稳定版|谷歌浏览器(Chrome 55稳定版)下载v55.0.2883.87官方正式版 - 欧普软件下载...
  18. 基于Docker离线部署开源视频会议系统Jitsi-Meet
  19. 思维导图 - 学习/实践
  20. python应用程序无法正常启动0xc00007b_详细教您解决应用程序无法正常启动(0xc000007b)...

热门文章

  1. BZOJ2125 最短路
  2. css3属性:美化表单、点击元素产生的背景与边框怎么去掉,滚动回弹效果
  3. 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
  4. LeetCode-Populating Next Right Pointers in Each Node-填充结点的右指针-二叉树递归
  5. 存储知识课堂(二):磁盘读写磁头揭秘
  6. tablespaces-datafiles示意图
  7. 让所有中国人看了气氛的广东某学校捐款过程
  8. 用触发器实现SQLite的外键约束
  9. RT2870 5370等移植(ARM,X86)
  10. 2.5.2 MySQL二进制日志介绍