刚学图论不久,看着别人的博客慢慢学了一点基础的,感觉还是有点力不从心,感觉图论的题好多长得都很像,什么太监算法(Tarjan),Kosaraju,当然最基础的还是并查集。。。好了继续介绍这道题。。。。

题意:蚂蚁王国有n个城市(n个点),要求输入的是第a个城市可以到第b个城市(m个边),求最少画几笔覆盖全部边。

 #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define m 100002
int point[m];///每个强连通分量的端点
int cnt;///计数
int fa[m];///并查集的父亲节点
int qiang[m];///强连通分量
bool used[m];///记录有没有访问过
int du[m];///度,如果是偶数的话+1,如果是奇数的话+=点数*1/2;
void unit(int n)
{
cnt=;
for(int i=;i<=n;i++)
{
point[i] = ;
qiang[i] = ;
fa[i]=-;
used[i]=;
}
}
int find(int x)
{
if(fa[x] >= )
{
fa[x]=find(fa[x]);
return fa[x];
}
return x;
}
void Union(int a,int b)
{
int x1 = find(a);
int x2 = find(b);
if(x1 == x2)
return ;
int r1 = fa[x1];
int r2 = fa[x2];
if(r1 < r2)
{
fa[x2] = x1;
fa[x1] += r2;
}
else
{
fa[x1]=x2;
fa[x2] += r1;
}
}
int main()
{
int n=,t=;
int x=,y=;
while(~scanf("%d%d",&n,&t))
{
unit(n);
cnt=;
for(int i=;i <= t;i++)
{
scanf("%d%d", &x , &y); du[x]++;
du[y]++;
Union(x , y);
} for(int i=;i<=n;i++)
{
int f = find(i);
if( !used[f] )
{
used[f] = ;
qiang[cnt++] = f;
}
if(du[i]% == )
point[f]++;
}
int output=;
for(int i=;i < cnt;i++)
{
if(du[qiang[i]] == )
continue;
if(point[qiang[i]]==)
output++;
else
{
output += point[qiang[i]]/;
}
}
printf("%d\n", output);
}
}

欧拉回路(hdu3018)的更多相关文章

  1. hdu3018欧拉回路题

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

  2. hdu3018 Ant Trip (并查集+欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题意:给你一个图,每条路只能走一次.问至少要多少个人才能遍历所有的点和所有的边. 这是之前没有接 ...

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

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

  4. ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)

    //网络流判定混合图欧拉回路 //通过网络流使得各点的出入度相同则possible,否则impossible //残留网络的权值为可改变方向的次数,即n个双向边则有n次 //Time:157Ms Me ...

  5. [poj2337]求字典序最小欧拉回路

    注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...

  6. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集

     FZU 2112 Tickets Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u P ...

  7. UVA 10054 the necklace 欧拉回路

    有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...

  8. POJ 1637 混合图的欧拉回路判定

    题意:一张混合图,判断是否存在欧拉回路. 分析参考: 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流! (1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定 ...

  9. codeforces 723E (欧拉回路)

    Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...

随机推荐

  1. Linux(ubanto):可以ping通IP,但不能ping通域名

    打开/etc/resolv.conf文件 vi /etc/resolv.conf 插入一下两行保存即可 nameserver 8.8.8.8 nameserver 8.8.4.4

  2. C++之路进阶codevs1269(匈牙利游戏)

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description ...

  3. JSON.stringify////////////////////////////////zzzzzzzzzzzzzz

    JSON.stringify 语法实例讲解 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个比方说,你有一个类 ...

  4. 详解clientHeight、offsetHeight、scrollHeight

    关于clientHeight.offsetHeight.scrollHeight   window.screen.availWidth 返回当前屏幕宽度(空白空间)  window.screen.av ...

  5. unity3D5旧动画系统注意事项

    最近在写人物控制时因为习惯用旧动画系统所以也没想那么多,就直接在新系统下按照老样子写了,突然发现animation.play不能用了,后来重新声明了变量: public Animation anim; ...

  6. 16.语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

    require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行 require include->include有返回值,而require没 ...

  7. Android Fragment应用实战

    现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上, ...

  8. nginx跨域配置

    假设前端页面的地址为: 192.168.1.1/arcgis40/index.html 页面物理路径为: X:\nginx-1.9.15\html\arcgis40 那么请求服务时,当ajax代码如下 ...

  9. 25个实用的jQuery技巧和解决方案

    1. 去除页面的右键菜单 $(document).ready(function(){ $(document).bind(“contextmenu”,function(e){returnfalse;}) ...

  10. QT QML目录导航列表视图

    [功能] /目录.文件 /文件过滤 /递归 /事件 /高亮当前行 /当前选项 /目录切换动画 /限制根目录 [下载]:http://download.csdn.net/detail/surfsky/8 ...