九野的博客,转载请注明出处:  http://blog.csdn.net/acmmmm/article/details/10858065

题意:n个点m条边的无向图,求用几笔可以把所有边画完(画过的边不再画)

思路:

并查集+欧拉回路

对于每个连通分量,若是欧拉回路则一笔画完,若不是则 需要: 奇度数点个数/2

然后把每个连通分量所需的笔数相加

这里要注意一个点是不用画的

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<set>
#include<math.h>
#include<string.h>
#define N 100010
using namespace std;
int f[N],d[N],fenliang[N];
int find(int x){
if(x==f[x])return x;
return f[x]=find(f[x]);
}
int main(){
int n,m,i,j,u,v;
while(~scanf("%d%d",&n,&m)){
for(i=1;i<=n;i++)f[i]=i;
memset(d,0,sizeof(d));
memset(fenliang,-1,sizeof(fenliang));
while(m--)
{
scanf("%d%d",&u,&v);
if(u>v){j=u;u=v;v=j;}
else if(u==v)continue;
f[find(u)]=find(v);
d[u]++,d[v]++;
}
int ans=0;
for(i=1;i<=n;i++)
{
find(i);
if(fenliang[f[i]]==-1 && d[i]>0)fenliang[f[i]]=0;
if(d[i]&1)fenliang[f[i]]++;
}
for(i=1;i<=n;i++)
if(fenliang[i]>0)ans+=fenliang[i]/2;
else if(fenliang[i]==0)ans++;
printf("%d\n",ans);
}
return 0;
}
/*
4 7
1 2
1 3
1 4
2 3
2 4
3 4
3 3 4 5
1 2
2 3
4 4
4 4
4 4 */

HDU 3018 Ant Trip的更多相关文章

  1. [欧拉回路] hdu 3018 Ant Trip

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3018 Ant Trip Time Limit: 2000/1000 MS (Java/Others) ...

  2. hdu 3018 Ant Trip 欧拉回路+并查集

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem ...

  3. HDU 3018 Ant Trip (欧拉回路)

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  4. HDU 3018 Ant Trip(欧拉回路,要几笔)

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. HDU 3018 Ant Trip (并查集求连通块数+欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题目大意:有n个点,m条边,人们希望走完所有的路,且每条道路只能走一遍.至少要将人们分成几组. ...

  6. HDU 3108 Ant Trip

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. hdoj 3018 Ant Trip(无向图欧拉路||一笔画+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 思路分析:题目可以看做一笔画问题,求最少画多少笔可以把所有的边画一次并且只画一次: 首先可以求出 ...

  8. HDU 3018 欧拉回路

    HDU - 3018 Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together ...

  9. 一本通1530 Ant Trip

    1530:Ant Trip [题目描述] 原题来自:2009 Multi-University Training Contest 12 - Host by FZU 给你无向图的 N 个点和 M 条边, ...

随机推荐

  1. jQuery之文本框得失焦点

    版本一 css代码部分: .focus { border: 1px solid #f00; background: #fcc; } 当焦点获得时,添加focus样式,添加边框,并改背景色为#fcc h ...

  2. Oracle通过主键id删除记录很慢

    问题描述: Oracle通过主键id删除2000条记录很慢,需要花费十二分钟. 解决过程: 1.首先查看SQL的执行计划,执行计划正常,cost只有4,用到了主键索引. 2.查看等待事件, selec ...

  3. 简单概述 .NET Framework 各版本区别

    目前已发行的版本有1.0.1.1.2.0.3.0.3.5.4.0.4.5(及4.5.1.4.5.2).4.6(及4.6.1). 1.0版本:最初的.net framework版本,作为一个独立的工具包 ...

  4. Linux 环境下自动化测试工具,Redhat dogtail的安装

    dogtail基于Accessibility(a11y)的GUI图形界面测试工具和自动化框架可以与linux桌面应用程序进行交互操作. dogtail是用Python语言写的.dogtail的测试脚本 ...

  5. getClassInstances --通过类的实例来得到数据

    好东西,空了来研究 实例代码如下: for b in getClassInstances bitmaptex doformat "Name : %, Texture name : %, Af ...

  6. pycharm console 控制台乱码的解决

  7. websphere安装和mvn dependency:copy-dependencies

    http://www.blogjava.net/paulwong/archive/2009/09/19/295657.html http://ljhzzyx.blog.163.com/blog/sta ...

  8. 蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法

    蓝牙4.0的开发, 现在真热火的很, 但是很多朋友买了我们出品的cc2540 usb-dongle后, 都反馈说不知道如何抓包, 并且, 即使很多朋友到TI官网论坛去找信息,不少朋友依然是无功而返,实 ...

  9. HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is returned

    参考: .Net HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is re ...

  10. Annikken Andee–Arduino与Android间的简易连接

    一个Arduino的兼容板,允许你显示并控制来自Android设备的Arduino应用.无需Anroid APP开发. 点击:观看视频 什么是Annikken Andee? Annikken Ande ...