欧拉回路+图的连通性
来源:互联网 发布:淘宝主营在哪里看 编辑:程序博客网 时间:2024/05/23 01:58
(1) 什么是欧拉路径和欧拉回路
简单说:一笔画问题就是欧拉路径和回路问题,可以一笔(不回笔)把一个图完整的画出来,路径就是欧拉路径,如果这个路径成环,那么就是欧拉回路。【就是要遍历完所有的边】
(2)判断欧拉回路是否存在的方法
有向图:图连通,所有的顶点出度=入度。
无向图:图连通,所有顶点都是偶数度。
(3)涉及图的连通性,图的连通性常用几种算法(个人YY,欢迎补充)
a.DFS
o(n^2)的复杂度
。。。。。。
b.弗洛伊德算法(最短路算法)
o(n^3) 贴一下软设代码。。。。。。
#include <iostream>using namespace std;#define inf 0x3f3f3f3fstruct graph{ int n,e; int mat[101][101];};struct graph C;void setgraph(){ int m,n,x; cin >> C.n >> C.e; for(int i=1; i<=C.n; i++) for(int j=1; j<=C.n; j++) C.mat[i][j]= inf; for(int i=1; i<=C.e; i++) { cin >> m >> n >> x; C.mat[m][n]=x; }}void Floyd(){ int d[101][101]; for(int i=1; i<=C.n; i++) for(int j=1; j<=C.n; j++) d[i][j]=C.mat[i][j]; for(int k=1; k<=C.n; k++) for(int i=1; i<=C.n; i++) for(int j=1; j<=C.n; j++) d[i][j]=min(d[i][k]+d[k][j],d[i][j]); //floyd for(int i=1; i<=C.n; i++) { for(int j=1; j<=C.n; j++) { if(d[i][j]==inf) cout << "∞" << " "; else cout << d[i][j] << " "; } cout << endl; }//print}int main(){ setgraph(); Floyd(); return 0;}c.并查集
-----------------------------------------------------
- 题目描述:
- 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
- 输入:
- 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
- 输出:
- 每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
- 样例输入:
3 31 21 32 33 21 22 30
- 样例输出:
10
- 来源:
- 2008年浙江大学计算机及软件工程研究生机试真题
#include <iostream>#include<cstdio>using namespace std;int p[1003],d[1003];int f(int x){ return p[x]==x?x:p[x]=f(p[x]);//注意这里的p[x]=f(p[x]),再压缩一下,嘿嘿。。。}int main(){ int n,m,a,b,f2,f1; while(scanf("%d",&n)!=EOF&&n) { f2=f1=0; for(int i=0;i<n;i++) { d[i]=0; p[i]=i; } cin >> m; for(int i=0; i<m; i++) { cin >> a >> b; p[f(a--)]=p[f(b--)]; d[a]++; d[b]++; } for(int i=0; i<n; i++) { if(p[i]==i) f1++; if(d[i]%2==1|| d[i]==0) f2++; } if(f1==1&&f2==0) cout << 1 << endl; else cout<< 0 << endl; } return 0;}
- 欧拉回路+图的连通性
- hdu 1878 欧拉回路,图的连通性判断
- 判断连通性 欧拉回路的性质 UVA10129
- hdu 1878 欧拉回路 无向图连通性
- [UVA 10129] Play on Words (图的连通性 + 欧拉回路)
- [UVA 10054] The Necklace (图的连通性 + 欧拉回路)
- POj 1386 Play on words 欧拉回路/通路,图的连通性判断
- UVA 10129 欧拉回路 判断连通性
- 图的欧拉回路
- 欧拉回路(混合图的欧拉回路)
- NYOJ+一笔画问题+先要判断无向图的连通性(DFS or并查集),然后使用欧拉回路。
- ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图
- 混合图的欧拉回路
- 混合图的欧拉回路POJ1637
- 混合图的欧拉回路
- 混合图的欧拉回路
- 混合图的欧拉回路
- 混合图的欧拉回路
- DM6467 Codec Engine执行流程 .
- live555 Streaming Media 分析与开发 .
- 深度看MVC
- 【Cocos2d-X开发学习笔记】第21期:动画类(CCAnimate)的使用
- Java线程的挂起与唤醒
- 欧拉回路+图的连通性
- Implement substring in C
- 编程珠玑 用后缀数组求字符串的最大重复子串
- 从归并排序到数列的逆序数对(微软笔试题)
- 理解 Proc 文件系统
- linux下vim中文乱码的解决方法
- Uart_Printf()函数实现
- ASP.NET MVC 的URL路由介绍
- HDU 2647 Reward 反向拓补排序