这题主要还是分类讨论欧拉回路

首先对于导线一端没有东西的新建一个节点 由于原图不一定连通所以需要用到并查集判断有多少个连通块 将一条导线连接的两个焊点连接

然后先对于只有一个连通块考虑

1.如果一个焊点是孤立点 它对于导线无影响跳过

2.如果一个焊点度数大于2 它必须被烧熔

3.对于每两对奇点 它们必须相连 这样才满足欧拉回路

对于一个连通块处理后考虑多个连通块,必须把他们组合在一起

1.同样忽略孤立点

2.如果原图是一个环

需要找到一个点将其烧熔,才能继续组合

但其中若有焊点度数大于2,那么它本身已经被烧熔了所以可以略去此步

最后每个连通块向外和另一连通块连接一根导线就组装好了

3.原图有链 这种情况下只要将一对奇点向外连就好了 当然对于程序来说就是无需考虑有链的连通块连接的答案,以为这之前单个处理已经统计过了

#include<bits/stdc++.h>
using namespace std;
const int maxn=101005;
int tot,ans,n,m,a,b,cnt;
int d[maxn],flag1[maxn],flag2[maxn],fa[maxn];
int read()
{int ch=0,x=0;while(ch=getchar(),ch<'0'||ch>'9');while(x=x*10+ch-48,ch=getchar(),ch>='0'&&ch<='9');return x;
}
int getfa(int x){return fa[x]==x?x:fa[x]=getfa(fa[x]);}
void conn(int x,int y)
{int fxx=getfa(x),fyy=getfa(y);if(fxx!=fyy)fa[fxx]=fyy;
}
int main()
{n=read();m=read();for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++){a=read();b=read();if(!a) a=++n,fa[a]=a;if(!b) b=++n,fa[b]=b;conn(a,b);d[a]++;d[b]++;}for(int i=1;i<=n;i++){if(!d[i])continue;if(d[i]&1){cnt++;flag1[getfa(i)]=1;}if(d[i]>2){ans++;flag2[getfa(i)]=1;}}for(int i=1;i<=n;i++)if(getfa(i)==i&&d[i])tot++;if(tot>1){for(int i=1;i<=n;i++)if(getfa(i)==i&&d[i]&&!flag1[i]){ans++;if(!flag2[i])ans++;}}ans+=cnt/2;printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/DavidJing/p/10386798.html

[福建集训2011][LOJ10111]相框相关推荐

  1. 【BZOJ-2503】相框 并查集 + 分类讨论

    2503: 相框 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 71  Solved: 31 [Submit][Status][Discuss] De ...

  2. Bzoj 2453: 维护队列 Bzoj 2120: 数颜色 分块,bitset

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 578  Solved: 247 [Submit][Status][Discus ...

  3. bzoj2448 挖油

    2448: 挖油 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 140  Solved: 61 [Submit][Status][Discuss] ...

  4. 计算机网络训练参考文献,计算机网络实用技术教学方法的研究

    摘要:计算机网络实用技术课程旨在培养学生的网络理论基础和实际操作能力.但是,在实际的教学过程中,无论是理论教学.实验教学还是综合实训教学都存在着一定的问题.本文通过对实用技术教学的分析,提出了一定的改 ...

  5. 四级英语听力软件测试,公务员考试网上做题 普通话测试软件 英语四级听力技巧...

    公务员考试网上做题 普通话测试软件 英语四级听力技巧 (2015-11-07 18:03:10) 标签: 普通话测试软件 英语四级听力技 [相似文献] 中国期刊全文数据库 前10条 1 李文,罗正跃; ...

  6. 关于测试的一篇论文, 基于web端selenium的自动化测试设计与实现(有需要的联系我 此论文内容缺失,不要直接用 一经发现,后果自负)

    论文题目:基于web端selenium的自动化测试设计与实现 学科(专业):计算机科学与技术 申请人: 指导教师: 摘 要 随着我国科学技术的飞速发展,软件应用技术的更新速度日新月异,规模不断扩大.普 ...

  7. 室温环境计算机控制,中央空调自控系统的几点见解

    摘 要:随着写字楼的大量普及,中央空调得到了越来越广的应用,而中央空调的自控系统也有了大范围的使用.本文简要阐述了中央空调系统自控.节能和空调房间温.湿度存在的问题及解决方案,以期能为所需者提供借鉴. ...

  8. 滨江学院c语言期中考试试题,2011年下半年福建滨江学院计算机等级考试通知

    一.报考级别语言: 一级:一级B.一级MS office: 二级:C语言.Visual FoxPro: 三级:数据库技术.网络技术: 四级:数据库工程师.网络工程师. 二.考试时间: 1.笔试时间: ...

  9. 2011年中国民营企业500强名单,广东仅13家浙江180家江苏130家

    全国工商联今天在北京召开2011中国民营企业500强发布会,发布2011中国民营企业500强(查看详细榜单).2011中国民营企业制造业500强名单以及2011中国民营企业500强分析报告.报告显示, ...

最新文章

  1. C#专业矩阵运算库——Math.Net
  2. 前序中序确认二叉树 7-23 还原二叉树(25 分)
  3. [译] CSS 变量实现炫酷鼠标悬浮效果
  4. Servlet_体系结构
  5. Java位操作:如何将long类型的指定位设置为0或1?How to set/unset a bit at specific position of a long?
  6. 睡觉时:新增的Java 8新增功能
  7. 吃货联盟 项目日记 0922
  8. mysql 查看表格scott_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
  9. 【二十】Jmeter:插件二次开发—— JMeter 源码导入 eclipse
  10. 【恋上数据结构】基数排序、桶排序、休眠排序
  11. JavaScript错误信息
  12. Polly简介 — 2. 弹性策略
  13. 世界杯座位选择顺序总数
  14. 高并发实战之幂等处理
  15. windows phone 7 学习笔记 五 TileSample
  16. EPLAN史上最全部件库,官网下载,部件宏,EDZ格式
  17. 安装Win7系统,提示缺少所需的CD/DVD驱动器设备驱动程序
  18. 3.6.3 获取分区的读取偏移量
  19. python爬虫之scrapy初试与抓取链家成交房产记录
  20. 如何给行内元素设置宽高

热门文章

  1. c#中ReadLine,Read,ReadKey的区别
  2. CPP_封装_继承_多态
  3. python基础——使用模块
  4. spring的applicationContext.xml如何自动加载
  5. Linux 禁止sendmail 自启动
  6. mac下 如果docker 如果访问不到网 就下载哥docker-machine 然后进入到vbox下进行操作
  7. jenkins的JAVA简单顺序配置git仓库
  8. instrumentation模拟很多activity的操作
  9. C#Word转Html的类
  10. java~springcloud微服务目录索引