BZOJ2503: 相框

Description

P大的基础电路实验课是一个无聊至极的课。每次实验,T君总是提前完成,管理员却不让T君离开,T君只能干坐在那儿无所事事。
先说说这个实验课,无非就是把几根导线和某些元器件(电阻、电容、电感等)用焊锡焊接起来。
为了打发时间,T君每次实验做完后都在焊接一些诡异的东西,这就是他的杰作:

 

       T君不满足于焊接奇形怪状的作品,强烈的破坏欲驱使他拆掉这个作品,然后将之焊接成规整的形状。这会儿,T君正要把这个怪物改造成一个环形,当作自己的相框,步骤如下:

 

T君约定了两种操作:

1.      烧熔一个焊点:使得连接在焊点上的某些导线相分离或保持相连(可以理解为:把焊点上的导线划分为若干个类,相同类中的导线相连,不同类之间的导线相离)

2.      将两根导线的自由端(即未与任何导线相连的一端)焊接起来。

 

例如上面的步骤中,先将A点烧熔,使得导线1与导线2、4点分离;再将D点烧熔,使得4、5与3、7相离;再烧熔E,使7与6、8相离;最后将1、7相连。

T君想用最少的操作来将原有的作品改造成为相框(要用上所有的导线)。

 

Input

输入文件的第一行共有两个整数nm — 分别表示原有的作品的焊点和导线的数量 (0 ≤ n ≤ 1 000, 2 ≤ m ≤ 50 000)。焊点的标号为1~n。 接下来的m行每行共有两个整数 — 导线两端所连接的两个焊点的标号,若不与任何焊点相连,则将这一端标号为0。

原有的作品可能不是连通的。

某些焊点可能只有一根导线与之相连,在该导线的这一端与其他导线相连之前,这些焊点不允许被烧熔。

某些焊点甚至没有任何导线与之相连,由于T君只关心导线,因此这些焊点可以不被考虑。

Output

       输出文件只包含一个整数——表示T君需要将原有的作品改造成相框的最少步数。

Sample Input

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

Sample Output

4

HINT

30%的数据中n≤10;

100%的数据中n≤1000。

这个还是挺考思路的,还要求一些图论性质:

首先我们要把每个联通块拆开,又因为要构成一个简单环,所以要拆成链状:

像这样

那么对于每一个欧拉回路,我们熔掉一个点就可以搞成上面n多个这东西

对于一个奇度点,我们拆一次也可以搞成这样(题目说了随便选边)

然后就可以合并了

代码如下:

//MT_LI
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int fa[110000];
int findfa(int x)
{if(fa[x]!=x)fa[x]=findfa(fa[x]);return fa[x];
}
int n,m;
int v[110000],er[110000];//是不是欧拉图,有没有被拆过 
int degree[110000];
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);if(!x)x=++n,fa[x]=x;if(!y)y=++n,fa[y]=y;degree[x]++;degree[y]++;int fx=findfa(x),fy=findfa(y);if(fx==fy)continue;fa[fy]=fx;}int ans=0,sum=0;for(int i=1;i<=n;i++){if(!degree[i])continue;if(degree[i]&1){sum++;er[findfa(i)]=1;}    if(degree[i]>2){ans++;v[findfa(i)]=1;}}int cnt=0;for(int i=1;i<=n;i++)if(fa[i]==i&&degree[i])cnt++;for(int i=1;i<=n;i++)if(cnt>1&&degree[i]&&fa[i]==i&&!er[i]){sum+=2;if(!v[i])ans++;}printf("%d\n",ans+sum/2);return 0;
}

 

 

转载于:https://www.cnblogs.com/MT-LI/p/9844281.html

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

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

相关文章

泰坦尼克号 数据分析_第1部分:泰坦尼克号-数据分析基础

泰坦尼克号 数据分析My goal was to get a better understanding of how to work with tabular data so I challenged myself and started with the Titanic -project. I think this was an excellent way to learn the basics of data analysis with python.我的目标是更好地了…

Imperva开源域目录控制器,简化活动目录集成

Imperva已公开发布域目录控制器&#xff08;Domain Directory Controller&#xff0c;DDC&#xff09;的源代码&#xff0c;这是一个Java库&#xff0c;用于简化常见的Active Directory集成。 与Java的LdapContext不同&#xff0c;这个库构建在Apache Directory LDAP之上&#…

2018.10.24 NOIP模拟 小 C 的序列(链表+数论)

传送门 考虑到a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])是可以分成最多logloglog段且段内的数都是相同的。 那么我们用…

vba数组dim_NDArray — —一个基于Java的N-Dim数组工具包

vba数组dim介绍 (Introduction) Within many development languages, there is a popular paradigm of using N-Dimensional arrays. They allow you to write numerical code that would otherwise require many levels of nested loops in only a few simple operations. Bec…

Nodejs教程08:同时处理GET/POST请求

示例代码请访问我的GitHub&#xff1a; github.com/chencl1986/… 同时处理GET/POST请求 通常在开发过程中&#xff0c;同一台服务器需要接收多种类型的请求&#xff0c;并区分不同接口&#xff0c;向客户端返回数据。 最常用的方式&#xff0c;就是对请求的方法、url进行区分判…

关于position的四个标签

四个标签是static&#xff0c;relative&#xff0c;absolute&#xff0c;fixed。 static 该值是正常流&#xff0c;并且是默认值&#xff0c;因此你很少看到&#xff08;如果存在的话&#xff09;指定该值。 relative&#xff1a;框的位置能够相对于它在正常流中的位置有所偏移…

python算法和数据结构_Python中的数据结构和算法

python算法和数据结构To至 Leonardo da Vinci达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this article is to give you a panorama of data structures and algorithms in Python. This topic is very important for a Data Scientist in order to help …

CSS:元素塌陷问题

2019独角兽企业重金招聘Python工程师标准>>> 描述&#xff1a; 在文档流中&#xff0c;父元素的高度默认是被子元素撑开的&#xff0c;也就是子元素多高&#xff0c;父元素就多高。但是当子元素设置浮动之后&#xff0c;子元素会完全脱离文档流&#xff0c;此时将会…

Celery介绍及常见错误

celery 情景&#xff1a;用户发起request&#xff0c;并等待response返回。在本些views中&#xff0c;可能需要执行一段耗时的程序&#xff0c;那么用户就会等待很长时间&#xff0c;造成不好的用户体验&#xff0c;比如发送邮件、手机验证码等。 使用celery后&#xff0c;情况…

python dash_Dash是Databricks Spark后端的理想基于Python的前端

python dash&#x1f4cc; Learn how to deliver AI for Big Data using Dash & Databricks this recorded webinar with Peter Kim of Plotly and Prasad Kona of Databricks.this通过Plotly的Peter Kim和Databricks的Prasad Kona的网络研讨会了解如何使用Dash&#xff06…

js里的数据类型转换

1、类型转换 转换为字符串 - String(x)- x.toString(x, 10)- x 转换为数字 - Number(x)- parseInt(x, 10) - parseFloat(x) - x - 0- x 转换为boolean - Boolean(x)- !!x 2、falsy值&#xff08;false&#xff09; - 0- NaN- - null- undefined 3、内存图 - object存储的是地址…

Eclipse 插件开发遇到问题心得总结

Eclipse 插件开发遇到问题心得总结 Posted on 2011-07-17 00:51 季枫 阅读(3997) 评论(0) 编辑 收藏1、Eclipse 中插件开发多语言的实现 为了使用 .properties 文件&#xff0c;需要在 META-INF/MANIFEST.MF 文件中定义&#xff1a; Bundle-Localization: plugin 这样就会…

/src/applicationContext.xml

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:context"http://www.springframework.org/schema…

在Python中查找子字符串索引的5种方法

在Python中查找字符串中子字符串索引的5种方法 (5 Ways to Find the Index of a Substring in Strings in Python) str.find() str.find() str.rfind() str.rfind() str.index() str.index() str.rindex() str.rindex() re.search() re.search() str.find() (str.find()) …

[LeetCode] 3. Longest Substring Without Repeating Characters 题解

问题描述 输入一个字符串&#xff0c;找到其中最长的不重复子串 例1&#xff1a; 输入&#xff1a;"abcabcbb" 输出&#xff1a;3 解释&#xff1a;最长非重复子串为"abc" 复制代码例2&#xff1a; 输入&#xff1a;"bbbbb" 输出&#xff1a;1 解…

WPF中MVVM模式的 Event 处理

WPF的有些UI元素有Command属性可以直接实现绑定&#xff0c;如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢&#xff1f; 答案就是使用EventTrigger可以实现。 继续上一篇对Slider的研究&#xff0c;在View中修改Interaction. <i:Interaction.Triggers>&…

Eclipse 插件开发 向导

阅读目录 最近由于特殊需要&#xff0c;开始学习插件开发。   下面就直接弄一个简单的插件吧!   1 新建一个插件工程   2 创建自己的插件名字&#xff0c;这个名字最好特殊一点&#xff0c;一遍融合到eclipse的时候&#xff0c;不会发生冲突。   3 下一步&#xff0c;进…

线性回归 假设_线性回归的假设

线性回归 假设Linear Regression is the bicycle of regression models. It’s simple yet incredibly useful. It can be used in a variety of domains. It has a nice closed formed solution, which makes model training a super-fast non-iterative process.线性回归是回…

ES6模块与commonJS模块的差异

参考&#xff1a; 前端模块化 ES6 在语言标准的层面上&#xff0c;实现了模块功能&#xff0c;而且实现得相当简单&#xff0c;旨在成为浏览器和服务器通用的模块解决方案。 其模块功能主要由两个命令构成&#xff1a;export和import。export命令用于规定模块的对外接口&#x…

solo

solo - 必应词典 美[soʊloʊ]英[səʊləʊ]n.【乐】独奏(曲)&#xff1b;独唱(曲)&#xff1b;单人舞&#xff1b;单独表演adj.独唱[奏]的&#xff1b;单独的&#xff1b;单人的v.独奏&#xff1b;放单飞adv.独网络梭罗&#xff1b;独奏曲&#xff1b;索罗变形复数&#xff1…