hdu3018 Ant Trip (并查集+欧拉回路)
题目链接: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 (并查集+欧拉回路)的更多相关文章
- HDU 3018 Ant Trip (并查集求连通块数+欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题目大意:有n个点,m条边,人们希望走完所有的路,且每条道路只能走一遍.至少要将人们分成几组. ...
- HDU3018:Ant Trip(欧拉回路)
Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu-3018 Ant Trip(欧拉路径)
题目链接: Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- NYOJ 42 一笔画问题 (并查集+欧拉回路 )
题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整数 ...
- poj2513 Colored Sticks —— 字典树 + 并查集 + 欧拉回路
题目链接:http://poj.org/problem?id=2513 题解:通过这题了解了字典树.用字典树存储颜色,并给颜色编上序号.这题为典型的欧拉回路问题:将每种颜色当成一个点.首先通过并查集判 ...
- Codeforces 1499G - Graph Coloring(带权并查集+欧拉回路)
Codeforces 题面传送门 & 洛谷题面传送门 一道非常神仙的题 %%%%%%%%%%%% 首先看到这样的设问,做题数量多一点的同学不难想到这个题.事实上对于此题而言,题面中那个&quo ...
- Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)
题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...
- HDU 3018 Ant Trip
九野的博客,转载请注明出处: http://blog.csdn.net/acmmmm/article/details/10858065 题意:n个点m条边的无向图,求用几笔可以把所有边画完(画过的边 ...
- hdu 3018 Ant Trip 欧拉回路+并查集
Ant Trip Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
随机推荐
- UVA 227 周期串
题意: 给一个字符串,寻找最短的循环节 如abcabcabcabc以3为周期,也按6和12为周期. 分析: 因为循环节肯定是相等的,所以枚举串长度的所有约数的循环节再判断是否相等即可. 我的方法是枚举 ...
- LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- Java恶搞!强制关闭电脑上的程序进程!
效果 最近写代码经常和各种进程打交道,发现了一个很有意思的黑科技. 我直接说有什么用吧,可以设置每隔多少时间检查某个程序是否在使用,如果在用,就强制关闭.比如,有的sb舍友晚上就是不睡觉,一边打游戏一 ...
- 鳥哥的 Linux 私房菜
RootKit Hunter 後端偵測軟體之架設與執行 切換解析度為 800x600 最近更新日期:2004/11/16 由前面幾個章節的說明,我們可以曉得因為主機的某些服務是有漏洞的, 黑客們可以針 ...
- 被老板逼着实现了Excle的透视表分析算法
package com.example.demo; import java.sql.SQLException;import java.util.ArrayList;import java.util.H ...
- [NOIP2004] 提高组 洛谷P1092 虫食算
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- bzoj1444 有趣的游戏(AC自动机+概率dp)
题意: 给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率. 分析: 容易想到先把所有的字符串建成一个AC自动 ...
- 戴尔PowerEdge服务器RAID控制卡的配置
示例演示环境:PowerEdge R620 + H710p Raid控制卡 + 9 x 300G 10k SAS 硬盘 H310.H710.H810的配置方法与H710P大致相同,在此不再累述. 特 ...
- [Algorithms] Determine if a string is a palindrome
A palindrome is a string that reads the same forward and backward, for example, radar, toot, and mad ...
- 【block第四篇】实现
-------------------------------------------欢迎查看block连载博客[专栏]--------------------------------------[b ...