数据结构实验之图论八:欧拉回路
来源:互联网 发布:比特彗星tcp端口阻塞 编辑:程序博客网 时间:2024/06/18 17:57
Think:
1知识:
1>欧拉回路:从一点出发经过图中每边一次且仅一次又回到出发点
2>无向图存在欧拉回路:无向连通图+所有结点度为偶数
2知识点:并查集
3知识拓展:
1>有向图存在欧拉回路:有向连通图+所有结点入度等于出度
2>混合图存在欧拉回路:
——建议参考博客
SDUT题目链接
以下为Accepted代码
#include <bits/stdc++.h>using namespace std;int n, f[1004], deg[1004];void Init();int get_f(int v);void Merge(int u, int v);bool Ans();int main(){ int T, m, i, u, v;///n为全局变量注意不要重复定义 scanf("%d", &T); while(T--){ scanf("%d %d", &n, &m); memset(deg, 0, sizeof(deg)); Init(); for(i = 1; i <= m; i++){ scanf("%d %d", &u, &v); Merge(u, v); deg[u]++, deg[v]++; } if(Ans()) printf("1\n"); else printf("0\n"); } return 0;}void Init(){ for(int i = 1; i <= n; i++) f[i] = i;}int get_f(int v){ if(f[v] == v) return f[v]; else { f[v] = get_f(f[v]); return f[v]; }}void Merge(int u, int v){ int t1 = get_f(u); int t2 = get_f(v); if(t1 != t2) f[t2] = t1;}bool Ans(){ int cnt = 0, flag = 0; for(int i = 1; i <= n; i++){ if(f[i] == i) cnt++; if(deg[i]%2 != 0) flag = 1; if(flag || cnt > 1) break; } if(flag || cnt != 1) return false; else return true;}/***************************************************User name: Result: AcceptedTake time: 0msTake Memory: 256KBSubmit time: 2017-07-14 16:24:25****************************************************/
阅读全文
1 0
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论八:欧拉回路
- 开源数据库的现状
- spring boot应用p6spy监控sql
- iTextPdf学习使用记录
- 02-MVP模式
- 用gensim doc2vec计算文本相似度
- 数据结构实验之图论八:欧拉回路
- Android 高仿微信图片选择器
- Mysql InnoDB引擎
- 用MMD做mmd动态模型
- nova对instance做resize操作失败
- Informatica自动备份folder和repository脚本
- 【Unity学习笔记】总结:unity中的中括号:[SerializeField][HideInInspector]等等(更新中)
- hdu 3986
- 在listview的item中使用EditText,刷新后保存数据的方法