题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018

题意:给你一个图,每条路只能走一次。问至少要多少个人才能遍历所有的点和所有的边。

   这是之前没有接触过的知识点。设计欧拉图,不理解直接记住就好啦。

欧拉图:若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。

    若该路径是一个圈,则称为欧拉(Euler)回路。具有欧拉回路的图称为欧拉图。

    具有欧拉路径但不具有欧拉回路的图称为半欧拉图。

    一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图。

    一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。

思路:队伍数=奇度数/2+欧拉回路数(欧拉回路中所有顶点的度数均为奇数,且是联通图) 求的是总和。

用并查集找连通图,用不定长数组存连通图。

代码:

#include<iostream>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
#define ll long long
const int INF=0x3f3f3f3f;
const int maxn=1e5+; int n,m;
vector<int>V;
int p[maxn],odd[maxn],vit[maxn],d[maxn]; void init()
{
V.clear();
for(int i=;i<=n;i++) p[i]=i;
memset(odd,,sizeof(odd));
memset(vit,,sizeof(vit));
memset(d,,sizeof(d));
} int Find(int x)
{
if(x!=p[x]) p[x]=Find(p[x]);
return p[x];
} int main()
{
while(scanf("%d%d",&n,&m)==)
{
init();
for(int i=;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
d[a]++,d[b]++;
int pa=Find(a);
int pb=Find(b);
if(pa!=pb) p[pb]=pa;
}
for(int i=;i<=n;i++)
{
int k=Find(i);
if(vit[k]==)
{
V.push_back(k);
vit[k]=;
}
if(d[i]%==) odd[k]++;
}
int ans=;
for(int i=;i<V.size();i++)
{
int v=V[i];
if(d[v]==) continue;
if(odd[v]==) ans++;
else ans+=odd[v]/;
}
printf("%d\n",ans);
}
return ;
}

hdu3018 Ant Trip (并查集+欧拉回路)的更多相关文章

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

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

  2. HDU3018:Ant Trip(欧拉回路)

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

  3. hdu-3018 Ant Trip(欧拉路径)

    题目链接: Ant Trip Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) ...

  4. NYOJ 42 一笔画问题 (并查集+欧拉回路 )

    题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画.   输入 第一行只有一个正整数 ...

  5. poj2513 Colored Sticks —— 字典树 + 并查集 + 欧拉回路

    题目链接:http://poj.org/problem?id=2513 题解:通过这题了解了字典树.用字典树存储颜色,并给颜色编上序号.这题为典型的欧拉回路问题:将每种颜色当成一个点.首先通过并查集判 ...

  6. Codeforces 1499G - Graph Coloring(带权并查集+欧拉回路)

    Codeforces 题面传送门 & 洛谷题面传送门 一道非常神仙的题 %%%%%%%%%%%% 首先看到这样的设问,做题数量多一点的同学不难想到这个题.事实上对于此题而言,题面中那个&quo ...

  7. Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)

    题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...

  8. HDU 3018 Ant Trip

    九野的博客,转载请注明出处:  http://blog.csdn.net/acmmmm/article/details/10858065 题意:n个点m条边的无向图,求用几笔可以把所有边画完(画过的边 ...

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

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

随机推荐

  1. 24L01-2.4G无线传输模块调节记录

    在调试24L01的时候,虽然能用到别人的程序,但仅仅是程序的初始化,并没有告诉我们如何去后续的操作,如何去再次发送一组数.最近调试24L01接近尾声,将逐一的地方总结下来,以便以后查阅,也供其他人借鉴 ...

  2. Django——配置服务器上线

    使用UWSGI和NGINX配置项目上线 首先你得有一个拿得出手的项目 其次,购买了域名,也备案成功了 将settings.py中的DEBUG设置为False 配置Uwsgi 在项目(哪里都可以)中创建 ...

  3. [luoguP1896] [SCOI2005]互不侵犯King(状压DP)

    传送门 先预处理出来一行中放置国王的所有情况和每种情况所用的国王个数. f[i][j][k]表示前i行放j个国王且最后一行的状态为k的方案数 状压DP即可 #include <cstdio> ...

  4. bzoj 1962 硬币游戏 (猜数问题)

    [bzoj1962]模型王子 2015年3月26日1,6460 Description Input 输入数据共一行,两个整数N,K,用一个空格隔开,具体意义如题目中所述. Output 输出数据共一行 ...

  5. 前端开发:JQuery(1)

    JQuery DOM文档加载的步骤: 1. 解析HTML结构: 2. 加载外部脚本和样式: 3. 解析并执行脚本代码: 4. DOM树构建完成: 5. 加载图片等外部文件: 6. 页面加载完成: JS ...

  6. onclick方法和$("").click()有不一样的地方

    话说是这样的...昨天写了一个文件上传的功能,是这样的,用fastdfs上传成功后会有一个url... 然后我自己测试上传,包括在文件服务器里都能找到.. 然后就自己打包发版了,都很正常也没报错... ...

  7. Help Jimmy DP

    Help Jimmy" 是在下图所示的场景上完成的游戏. 场景中包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的某处开始下落, ...

  8. 深入理解hadoop(三)

    Hadoop多用户作业调度器 hadoop 最初是为批处理作业设计的,当时只采用了一个简单的FIFO调度机制分配任务,随着hadoop的普及以及应用的用户越来越多,基于FIFO的单用户调度机制不能很好 ...

  9. cogs——73. 找最佳通路

    73. 找最佳通路 ★☆   输入文件:city.in   输出文件:city.out   简单对比时间限制:1 s   内存限制:128 MB 问题描述有 n 个 城市,它们之间的交通情况已知.现在 ...

  10. Ubuntu 16.04安装GTX960闭源驱动

    GTX960的闭源要Nvidia 346版才行,闭源驱动能很大提升显卡的性能,例如双显示输出等,缺点是不开源. 有以下方式来安装: 1.命令行: sudo add-apt-repository -y ...