欧拉回路的判定
2015-12-13 19:39
441 查看
#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <cstdio> #include <cstring> using namespace std; #define N 1005 int n,m; vector<int>Edge ; int deg ; bool vis ; void dfs(int x){ int p; vis[x]=true; for(int i=0;i<Edge[x].size();i++) { p = Edge[x][i]; if(!vis[p])dfs(p); } } int main() { while (scanf("%d%d",&n,&m)==2&&n) { for(int i=1;i<=n;i++){ deg[i]=0; Edge[i].clear(); } for(int i=1;i<=m;i++){ int a,b; scanf("%d%d",&a,&b); Edge[a].push_back(b); Edge[b].push_back(a); deg[a]++; deg[b]++; } bool flag = true; for(int i=1;i<=n;i++){ if(deg[i]&1){ printf("0\n"); flag = false; break; } } if(!flag)continue; memset(vis, 0, sizeof(vis)); dfs(1); for(int i=1;i<=n;i++){ if(!vis[i]){ flag = false; break; } } if(flag)printf("1\n"); else printf("0\n"); } return 0; }
欧拉回路是不存在奇度点的;
若果存在奇度点就不需要dfs了;不存在奇度点就dfs如果能把图中的每个点都能访问到就存在欧拉回路;
相关文章推荐
- 欧拉回路
- HDU-3018-欧拉回路
- 初识Jenkins
- JSTL 核心标签库 使用 (转)
- uva 116 Unidirectional TSP【号码塔+打印路径】
- Famitracker 效果列表(Effect list)
- python中的多线程
- android之ContentProvider详解
- golang声明变量
- 过滤器验证用户登录
- 多路分发_demo_me
- Windows——用快捷键打开命令提示符cmd
- 密码学之RSA加密
- c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?
- iOS 点击空白处收回键盘的方法
- 初探nodejs创建web服务器
- 安卓在雪域注册
- 密码学之密匙交换
- json(转)
- 机器学习: 决策树(Decision Tree)