3364 数据结构实验之图论八:欧拉回路
2016-05-13 21:37
417 查看
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3364
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。
能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人们又通常把一笔画成回到出发点的欧拉路叫做欧拉回路。具有欧拉回路的图叫做欧拉图。
你的任务是:对于给定的一组无向图数据,判断其是否成其为欧拉图?
连续T组数据输入,每组数据第一行给出两个正整数,分别表示结点数目N(1 < N <= 1000)和边数M;随后M行对应M条边,每行给出两个正整数,分别表示该边连通的两个结点的编号,结点从1~N编号。
若为欧拉图输出1,否则输出0。
如果无向图连通并且所有结点的度都是偶数,则存在欧拉回路,否则不存在。
xam
提交
状态
讨论
邻接矩阵存图并检查结点度数是否为偶数,然后对图广搜检查是否连通,代码如下:
数据结构实验之图论八:欧拉回路
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人们又通常把一笔画成回到出发点的欧拉路叫做欧拉回路。具有欧拉回路的图叫做欧拉图。
你的任务是:对于给定的一组无向图数据,判断其是否成其为欧拉图?
输入
连续T组数据输入,每组数据第一行给出两个正整数,分别表示结点数目N(1 < N <= 1000)和边数M;随后M行对应M条边,每行给出两个正整数,分别表示该边连通的两个结点的编号,结点从1~N编号。
输出
若为欧拉图输出1,否则输出0。
示例输入
1 6 10 1 2 2 3 3 1 4 5 5 6 6 4 1 4 1 6 3 4 3 6
示例输出
1
提示
如果无向图连通并且所有结点的度都是偶数,则存在欧拉回路,否则不存在。
来源
xam
示例程序
提交
状态
讨论
邻接矩阵存图并检查结点度数是否为偶数,然后对图广搜检查是否连通,代码如下:
#include <cstdio> #include <iostream> #include <queue> #include <cstring> #include <algorithm> using namespace std; bool a[1000+5][1000+5]; int main() { int n, m; int t; scanf("%d", &t); while(t--) { memset(a,0,sizeof(a)); scanf("%d %d", &n, &m); while(m--) { int u, v; scanf("%d %d", &u, &v); a[u][v]=a[v][u]=1; } bool f=1; for(int i=1;i<=n;i++) { int cnt=0; for(int j=1;j<=n;j++) if(i!=j&&a[i][j]) cnt++; if(cnt%2) {f=0;break;} } if(f) { bool vis[1000+5]={0}; int cnt=0; queue<int >q; q.push(1); while(!q.empty()) { int x=q.front(); q.pop(); for(int i=1;i<=n;i++) if(a[x][i]&&!vis[i]) { vis[i]=1; cnt++; q.push(i); } } if(cnt>=n) printf("1\n"); else printf("0\n"); } else printf("0\n"); } return 0; }
相关文章推荐
- 链表的应用
- 【数据结构】栈和队列
- 算法基础 - 并查集
- 数据结构与算法分析(2)算法效率问题引入与递归简论
- KMP算法详解
- 三维形体的数据结构(1)半边数据结构
- 【33】二叉树的镜像
- sdutoj 3363 数据结构实验之图论七:驴友计划 (暴力深搜最短路)
- sdutoj 3363 数据结构实验之图论七:驴友计划
- erlang 常用数据结构
- 数据结构域算法基础 一
- 【数据结构】两个队列实现一个栈
- 数据结构-前序遍历、中序遍历、后序遍历、层级遍历(递归、非递归)
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
- 【数据结构】位图BitMap、布隆过滤器的算法实现
- 数据结构与算法——B树的C++实现
- 浅谈关于递归的一些感悟
- 数据结构总结
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构笔记