随笔分类 -  欧拉路||欧拉回路

摘要:View Code #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int maxnode = 50; const int maxedge = 2000; struct edge { int start; int end; }; edge ArrayEdge[maxedge]; int degree[maxnode]; int start; int NodeNum, EdgeNum; int anStack[maxedge], pIn 阅读全文
posted @ 2011-08-07 17:33 枕边梦 阅读(269) 评论(0) 推荐(0)
摘要:这题目跟hdu2894差不多,只不过求出序列之后要求算出对应第k个长度为n的字段所代表的数字#include<iostream>#include<string>using namespace std;int flag[(1<<15)+1],n,cnt,ans[(1<<15)+1],sum[(1<<15)+1];void dfs(int u){ int t=((u<<1)&((1<<n)-1)); if(!flag[t]) { flag[t]=1; dfs(t); ans[cnt++]=0; } if(! 阅读全文
posted @ 2011-08-07 04:57 枕边梦 阅读(269) 评论(0) 推荐(0)
摘要:呵呵,好神奇,题目隐含的意思就是要找出一条欧拉回路先看下这个详细 的解释,欧拉图的应用:计算机鼓轮的设计。设有旋转鼓轮其表面被等分成24个部分,如图7-4.4所示。其中每一部分分别用绝缘体或导体组成,绝缘体部分给出信号0,导体部分给出信号1,在图7-4.4中阴影部分表示导体,空白部分表示绝缘体,根据鼓轮的位置,触点将得到信息1101,如果鼓轮沿顺时针方向旋转一个部分,触点将有信息1010。问鼓轮上16个部分怎样安排导体及绝缘体,才能使鼓轮每旋转一个部分,四个触点能得到一组不同的四位二进制数信息。设有一个八个结点的有向图(图7-4.5),其结点分别记为三位二进制数{000,001,010,011 阅读全文
posted @ 2011-08-06 17:48 枕边梦 阅读(989) 评论(0) 推荐(1)
摘要:唉,总算是过了,很无语呀,本来想改改,看效率能否提高一点,可是改来改去还是快不了多少,反而因为一些小错误多了几次WA这题用字典树还有并查集做,至于判断欧拉路之前已经说过了,只需要判断连通 && 所以节点的度为偶数 或者只有俩个节点的度为奇数‘用并查集主要是判断是否连通用字典树是为了给读入的字符串编号(这一步也就是跟之前pku 1386 唯一的区别吧)本题特别要注意的是一点就是,有空数据,唉…………#include<iostream>#include<string>#define MAXN 500100using namespace std;int f[M 阅读全文
posted @ 2011-08-06 12:27 枕边梦 阅读(181) 评论(0) 推荐(0)
摘要:判断是否存在欧拉回路存在欧拉回路的条件:无向图1) 连通2) 所有节点的度为偶数不知道用并查集做是不是本来就比较慢,反正慢了好多#include<iostream>using namespace std;int r[1000],f[1000];int find(int x){ if(x==f[x]) return x; f[x]=find(f[x]);};void Union(int x,int y){ int a=find(x); int b=find(y); if(a!=b) f[b]=a; return;}void init(int n){ for(int i=0;i< 阅读全文
posted @ 2011-08-05 14:04 枕边梦 阅读(295) 评论(0) 推荐(0)
摘要:我的思路:用俩个数组分别记录出现过的节点的入度和出度,这样只有一个字母的入度比出度大1,一个字母的出度比入度大1,或者是所有有字母的出度和入度都一样,他就是欧拉路但这样还差了一个联通性的判断 于是我用了一个辅助数组 f[] 用并查集的方式判断是否连通代码:#include<iostream>#include<string>using namespace std;int f[30],c[30],r[30];char s[1005];int find(int x) { if(x==f[x]) return f[x]; f[x]=find(f[x]); return f[x] 阅读全文
posted @ 2011-08-03 09:27 枕边梦 阅读(206) 评论(0) 推荐(0)
摘要:欧拉路,欧拉回路小结 把欧拉路和欧拉回路做一个小总结,包含了一些题目,以后遇到新的我还会陆续加上。 定义: 给定无孤立结点图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在 一条回路经过G每条边有且仅有一次,称这条回路为欧拉回路。具有欧拉回路的图成为欧拉图。 关于欧拉路和欧拉回路定义及存在证明请看这里。 这里给出欧拉路和欧拉回路存在条件的结论: 存在欧拉路的条件: 无向图: 图连通,所有点都是偶数度,或者只有两个点是奇数度。当所有点是偶数度时欧拉路起点可以是任意 点;当有两个奇数度点时起点必须是奇数度点。 有向图: 图连通,所有点出度=入度,或者有一个点入度-出度=1, 阅读全文
posted @ 2011-08-02 23:17 枕边梦 阅读(2598) 评论(0) 推荐(1)