欧拉 哈密顿路径
九野的博客
这个作者很懒,什么都没留下…
展开
-
HDU 3018 Ant Trip
题意:n个点m条边,求用几笔可以把所有边画完(画过的边不再画)思路:并查集+欧拉回路对于每个连通分量,若是欧拉回路则一笔画完,若不是则 需要: 奇度数点个数/2 然后把每个连通分量所需的笔数相加这里要注意一个点是不用画的 #include#include#include#include#include#include#define N 10001原创 2013-09-01 21:57:07 · 1875 阅读 · 0 评论 -
HDU 4067 Random Maze 费用流 构造欧拉通路
题目链接:点击打开链接题意:给定n个点m条有向边的图, 起点s ,终点t下面m条边 u,v, a,b 若选择这条边花费为a, 不选择花费为b构造一条欧拉通路使得起点是s,终点是t,且花费最小。思路:首先能想到一个简单的思路:假设所有边都选择,然后在费用流里跑,就会出现负环的问题。。所以为了避免负环,让所有费用都为正值:int sum = 0;若a>b, 则 费原创 2015-04-22 14:33:12 · 1111 阅读 · 0 评论 -
POJ 2677 Tour 双调旅行商 dp, double+费用流
题目链接:点击打开链接题意:给定二维平面上的n个点从最左端点到最右端点(只能向右移动)再返回到到最右端点(只能向左移动,且走过的点不能再走)问最短路。dp 点击打开链接#include #include #include #include #include #include #include #include using namespace std;#de原创 2014-05-17 16:29:31 · 1457 阅读 · 0 评论 -
Codeforces 508D Tanya and Password 欧拉通路Euler
题目链接:点击打开链接题意:给定n个长度为3各不相同的字符串,猜一个n+2位的密码。这个密码包含上面的所有字符串思路:把 abc 拆成ab -> bc则得到一个图,目标就是走遍所有 ab->bc 这样的边,也就是找一条欧拉通路。#include #include #include #include #include #include #include原创 2015-01-28 17:34:11 · 1601 阅读 · 0 评论 -
POJ 2337 Catenyms 欧拉通路
题目链接:点击打开链接题意:把输入的n个由小写字母构成的字符串连成字典序最小的一句话,使得所有字符串都恰好出现一次且相邻两个字符串相邻的字母相同思路:比如abcd,我们认为是这样一条边:a->d所以我们在a->d间建一条边。1、如:abcd, dfgh,那么得到的边就是 a->d, d->h。而题目的目标是每个字符串恰好用一次,即每条边恰好用一次。也就是找一条欧拉通原创 2015-01-29 13:50:11 · 1305 阅读 · 0 评论 -
CodeForces 21D Traveling Graph 状压dp+欧拉回路
题目链接:点击打开链接题意:给定n个点m条边的无向图求从1点开始经过每条边至少一次最后回到1点的最小路程显然就是找一条路径可重复的欧拉回路思路:首先对于欧拉回路的结论是:所有点的度数都为偶数因为所有边至少经过一次,那么可以把题意转换成加最少多少条边使得图满足以上结论而加的边目的是为了把奇度数转成偶度数,先floyd一下得到任意点间加边的最小花费dp[i]表示状态原创 2014-07-01 11:41:11 · 1684 阅读 · 0 评论 -
哈密顿回路模版
找一条哈密顿回路。一个原创 2014-10-06 23:20:51 · 1979 阅读 · 0 评论 -
HDU 4337 King Arthur's Knights 输出一条哈密顿回路
n个点m条无向边输出一条哈密顿回路#include #include #include using namespace std;const int N = 155;int n, m;bool mp[N][N];int S, T, top, Stack[N];bool vis[N];void _reverse(int l,int r) { while原创 2014-10-06 22:00:17 · 1390 阅读 · 1 评论 -
HDU 2894 欧拉回路
#include#include#include#include#includeusing namespace std;#define N 20020struct node{ int from, to, dou, nex;}edge[N];int head[N], edgenum;void add(int u, int v,int dou){ node E={u,v,dou原创 2014-05-02 21:39:10 · 1656 阅读 · 0 评论 -
HDU 3472 混合图欧拉回路 + 网络流
题意:T个测试数据n串字符 能否倒过来用(1表示能倒着用)问能否把所有字符串 首尾相接 欧拉回路是图G中的一个回路,经过每条边有且仅一次,称该回路为欧拉回路。具有欧拉回路的图称为欧拉图,简称E图。 混合图就是边集中有有向边和无向边同时存在。这时候需要用网络流建模求解。不能倒着用就是有向边,能倒着用就是无向边http://yzmduncan.iteye.com原创 2013-10-31 20:21:32 · 2435 阅读 · 2 评论 -
欧拉回路及哈密顿回路
转载自:http://blog.csdn.net/zhang360896270/article/details/8746783欧拉图:在图为连通图的前提下,欧拉通路:当前图中经过每条边一次且仅一次,若最终回到出发点则称为欧拉回路。相关判定条件(图联通)(1)无向图存在欧拉回路的条件是:图中不存在奇度结点,有向图存在欧拉回路的条件是:每个结点出度均等于入度。(2)无向图存在欧拉通转载 2013-10-04 21:38:37 · 3200 阅读 · 0 评论 -
HDU 1878 欧拉回路
一笔画问题,只要满足连通分量是1且所有点的度是偶数即可 #include#include#include#include#include#include#define N 1000using namespace std;int f[N],d[N];int find(int x){ if(x==f[x])return x; return f[x原创 2013-09-02 15:48:44 · 1451 阅读 · 0 评论 -
codeforces 547D Mike and Fish 欧拉路径
题目链接:点击打开链接题意:给定二维平面上的n个点的坐标问:把每个点用红色或蓝色染色, 使得 水平共线(或者垂直共线)的 点 中红色与蓝色数量差不超过1.思路:我们建一个二部图,X集是x轴,Y集是y轴那么点(1,5)就是 x集的 1向 y集的 5连一条边。此时点就是用边来表示的,那我们的任务就是给边染色。使得:对于二部图中任意一个点, 点所连接的红边和蓝边数原创 2015-05-29 21:35:00 · 1704 阅读 · 0 评论