hdu1878判断欧拉图
来源:互联网 发布:wacom绘画软件 编辑:程序博客网 时间:2024/06/09 19:44
/*判断是否有欧拉回路,即判断是否为欧拉图
条件1:图连通:用并查集判断
2:不含奇度顶点
*/
#include <cstdio>#include <cstring>#define N 1000using namespace std;int map[N][N];int n, m;int f[N];void init(){for (int i = 1; i <= n; i++)f[i] = i;}int find(int x){return x == f[x] ? x : f[x] = find(f[x]);}void merge(int x, int y){int t1, t2;t1 = find(x); t2 = find(y);if (t1 != t2)f[t2] = t1;else return;}int main(){while (scanf("%d", &n) != EOF && n){init();scanf("%d", &m);int t1, t2;memset(map, 0, sizeof(map));for (int i = 0; i < m; i++){scanf("%d%d", &t1, &t2);//输入有t1,t2相等的情况if (t1 == t2)continue;map[t1][t2] = map[t2][t1] = 1;merge(t1, t2);}int cnt = 0, flag1 = 0;//flag1用来标记是否连通for (int i = 1; i <= n; i++){if (f[i] == i)cnt++;}if (cnt == 1)flag1 = 1;//下边判断是否含奇度顶点int flag2 = 1;for (int i = 1; i <= n; i++){cnt = 0;for (int j = 1; j <= n; j++){if (map[i][j])cnt++;}if (cnt % 2 == 1){flag2 = 0;break;}}printf("%d\n", flag1 && flag2);}return 0;}
上边是自己的ac代码,不过觉得用图存的话比较耗时,第二部分是参考网上思路重写了一遍。
#include <cstdio>#include <cstring>#define N 1000using namespace std;int n, m;int f[N],degree[N];//记录第i点的度数void init(){for (int i = 1; i <= n; i++)f[i] = i;}int find(int x){return x == f[x] ? x : f[x] = find(f[x]);}void merge(int x, int y){int t1, t2;t1 = find(x); t2 = find(y);if (t1 != t2)f[t2] = t1;else return;}int isEuler(){for (int i = 1; i <= n; i++)if (degree[i] & 1)return 0;return 1;}int isconnect(){int cnt = 0;for (int i = 1; i <= n; i++){if (f[i] == i)cnt++;}if (cnt == 1)return 1;else return 0;}int main(){while (scanf("%d", &n) != EOF && n){init();memset(degree, 0, sizeof(degree));scanf("%d", &m);int t1, t2;for (int i = 0; i < m; i++){scanf("%d%d", &t1, &t2);//输入有t1,t2相等的情况if (t1 == t2)continue;degree[t1]++; degree[t2]++;merge(t1, t2);}printf("%d\n", isEuler() && isconnect());}return 0;}
0 0
- hdu1878(判断欧拉图)
- hdu1878判断欧拉图
- hdu1878
- hdu1878
- hdu1878(判断有无欧拉回路)
- HDU1878无向图判断欧拉回路
- hdu1878—欧拉回路(欧拉回路判断)
- hdu1878-判断欧拉回路-欧拉回路
- 欧拉图的学习hdu1878(欧拉回路)
- hdu1878 欧拉回路 (判断是否存在欧拉回路)
- hdu1878 判断一个无向图是否存在欧拉回路模板
- 欧拉回路 hdu1878
- hdu1878欧拉回路
- hdu1878 欧拉回路
- 欧拉回路((hdu1878))
- HDU1878欧拉回路
- 欧拉回路 hdu1878
- HDU1878欧拉回路
- 表单
- 我博客的第一天
- leetcode算法题(JavaScript实现)
- [Educational Codeforces Round 17 C (762C)] Two strings
- fatmouse‘ trade
- hdu1878判断欧拉图
- 网页的制作---笔记
- JSP学习一
- php 下划线和驼峰相互转换
- 关于ActiveMQ的简单整理(1)
- hibernate N+1问题
- 在RecyclerView里使用图片轮播
- codevs天梯 十进制转N进制 暴力模拟
- 2016届蓝桥杯省赛A组格子输出(printf(“”%*s“”)的应用)