随笔分类 - 欧拉回路
摘要:欧拉回路题意:给一个有向图,判断是否是欧拉回路,并且输出路径, 要求字典序最小。其中输出时这个给的,x y z,x和y是点的编号(点数最多44),z是边的编号(这边是有编号的,边数最大1995),其中输出路径不是输出点而是输出边的编号,所以字典序最小是指边的字典序最小。每组数据以0 0 结束。其中每组数组的第一行,两个点x,y,选较小的那个作为起点这题,图是保证连通的,所以不需要判断连通,所以判断是不是欧拉图,只需要看每个点的度是否都为偶数,不是的话则不存在欧拉回路,是的话就存在欧拉回路输出字典序最小的路径,环一个建图方法即可e[k][0] , e[k][1]表示第k条边的两个顶点我们用递归的
阅读全文
摘要:一样的题目,看poj 1386 Play on Words即可
阅读全文
摘要:再学欧拉路无力再写题解报告了,最近写得最难受的一道题,前前后后调试了有10来个小时,就一个这么个BUG#define N 30#define MAX 1010开某些数组的时候把N和MAX写反了但是…………代码还是有问题的,G++一直过不了,一直是WA,C++可以过,等下还要调试,一定要把G++给过了题意:和poj 1386 是一样的题目,不过这次要输出路径,而且要字典序最小做法:用邻接表来构建有向图(我的构建方法和网上找来的不一样,不是用白书介绍的那种模拟链表的头插法,而是直接一点,比较然后插入,已有的元素向后移,感觉在时间上没什么差距)。然后用并查集来判断有向图的基图是否连通(其实直接用邻接
阅读全文
摘要:再学欧拉路,没搞清楚定理错了好几次题意:给你n个单词,要求这些单词相连,要求是前面的字母的尾字母和后面单词的头字母相同,问你这n个单词能不能全部连起来,可以连成一条链或者连成一个环另外单词只有小写字母。很容易想到,顶点集合就是26个小写字母,用1到26来表示,一个单词的首字母和尾字母就是一条有向边,注意是有向边,因为单词是不能倒回来的其实就是问你这个图是否存在欧拉道路(一条链的情况)或者欧拉回路(环的情况),反正存在欧拉路就是成功的,否则就是失败判断有向图是否有欧拉路1.判断有向图的基图(即有向图转化为无向图)连通性,用简单的DFS即可。如果图都不连通,一定不存在欧拉路2.在条件1的基础上 对
阅读全文
摘要:推荐技术公众号:不爱睡觉的大猪 题意:给你n个珠子,一个珠子分为两半有两种颜色,用1到50来表示50种不同的颜色。把这些珠子串起来,两个紧挨着的珠子要满足一个条件就是接触的那部分颜色要相同 例如(1,2)(2,4),两个珠子的接触部分颜色相同都为2。当然,因为珠子最后是连成环的,第一个珠子和最后一个
阅读全文
摘要:欧拉回路裸题,给定n个点和m条有向边,判断该图是否为欧拉回路有向图欧拉回路判断条件有:图连通,所有点的度为偶数代码一,用并查集来判断图是否连通,然后逐一扫描所有点的度是否为偶数#include <stdio.h>#include <string.h>#define N 110int n,m;int d[N];int p[N];int find(int x) //并查集{ return p[x]==x ? x : find(p[x]); }int main(){ int CASE,i,j,u,v,x,y,ok; scanf("%d",&CASE
阅读全文
摘要:其实题意不是很明白,看了别人的解题报告然后按照思路来实现,最后AC了,但是对于题意还是很有问题判断是否有欧拉回路,图要连通(用并查集来处理),然后所有顶点的度数为偶数在这个博客中http://www.cnblogs.com/penseur/archive/2011/02/28/1967412.html说输入的边中要包含所有的点才是存在,但是按照这个AC代码以及网上找回来的大部分代码表明是不需要包括所有代码的例如10 28 99 8输出Possible按照这个AC代码的意思应该是前面的点可以不存在,但是一旦出现了第i个点,那么必须从第i个点到第n-1个点都存在,而且图连通,度为偶数,才存在欧拉回
阅读全文

浙公网安备 33010602011771号