欧拉回路(hdu3018)
刚学图论不久,看着别人的博客慢慢学了一点基础的,感觉还是有点力不从心,感觉图论的题好多长得都很像,什么太监算法(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)的更多相关文章
- hdu3018欧拉回路题
Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- hdu3018 Ant Trip (并查集+欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题意:给你一个图,每条路只能走一次.问至少要多少个人才能遍历所有的点和所有的边. 这是之前没有接 ...
- HDU3018:Ant Trip(欧拉回路)
Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)
//网络流判定混合图欧拉回路 //通过网络流使得各点的出入度相同则possible,否则impossible //残留网络的权值为可改变方向的次数,即n个双向边则有n次 //Time:157Ms Me ...
- [poj2337]求字典序最小欧拉回路
注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...
- ACM: FZU 2112 Tickets - 欧拉回路 - 并查集
FZU 2112 Tickets Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u P ...
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- POJ 1637 混合图的欧拉回路判定
题意:一张混合图,判断是否存在欧拉回路. 分析参考: 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流! (1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定 ...
- codeforces 723E (欧拉回路)
Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...
随机推荐
- Ubuntu 汉化时ubuntu software database is broken错误解决
关于Ubuntu 汉化时的错误解决:按照网上的方法没有解决 最后 删掉thunderbird mail .这个软件,顺利解决!! 错误:thunderbird-locale-en: Depends: ...
- vmware在桥接模式下配置centos7网络,并使用xshell连接虚拟主机(总结篇)
虚拟机系统:centos7 mini版本 1.虚拟安装成功之后,首先我配置的是桥接模式,因为我使用的是网线,配置完桥接模式之后我的linux虚拟机就可以访问网络了 2.因为我安装的是centos7的迷 ...
- mapreduce性能提升2
mapreduce性能提升2mapreduce性能提升2mapreduce性能提升2
- Css深入理解之浮动_慕课网课程笔记
前言 这篇是在慕课网上跟着张鑫旭重走CSS之路的第三篇学习笔记了,主要是学习float属性,闲话少说,下面进入正文. float的历史 要想了解一个东西,我们还是需要从本质去了解它,那么我们就需要问一 ...
- mysql dba系统学习(6)二进制日志binlog之二
MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点.MySQL R ...
- springmvc之格式化要显示的小数或者日期。
把保存的小数或者日期按照想要的格式显示. 首先导入jar包joda-time-2.3.jar,下载地址http://pan.baidu.com/s/1gfNuUfp 这里使用注解的方式进行格式化. 创 ...
- LinQ 组合查询与分页
1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...
- ios 缺少合规证明
现在app上传到appStore的时候,项目中如果出现加密,状态栏是:缺少合规证明. 解决的方法是在Info.plist文件中添加:ITSAppUsesNonExemptEncryption 设置为N ...
- jquery网页换肤+jquery的cookie+动态调用css样式文件,可以的
比较具有参考性,代码全贴(当然,还需要一张图片需要的留个邮箱,看到就发) 贴在这儿吧,修改一下css的引用位置应该可以用 <%@ page language="java" c ...
- NoSQL数据库笔谈(转)
NoSQL数据库笔谈 databases , appdir , node , paper颜开 , v0.2 , 2010.2 序 思想篇 CAP 最终一致性 变体 BASE 其他 I/O的五分钟法则 ...