博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
欧拉求解
阅读量:3951 次
发布时间:2019-05-24

本文共 2104 字,大约阅读时间需要 7 分钟。

东软学习小组成员:夜枫

测试案例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include
#include
#include
using namespace std;stack
s;stack
q;const int N = 100;int map[N][N];//矩阵 int ans[N];//顶点int n, m;//n个顶点,m条边 bool vis[N] = {
false};int set[1000005];int find(int x){
return x == set[x] ? x : (set[x] = find(set[x])); //递归查找集合的代表元素,含路径压缩。}void dfs1(int s){
//递归深搜 vis[s] = true; for (int i = 1; i<=n; ++i){
if (!vis[i]){
dfs1(i); } }}bool judge(){
//判断是否所有点已被遍历过 for (int i = 1; i <= n; ++i) if (!vis[i]) return false; return true;}void dfs(int x, int isyou = 0){
//默认无向图//isyou=1为有向图 s.push(x); for (int i = 1; i <= n; ++i){
if (map[x][i] >= 1){
//有边 map[x][i]--; if (isyou == 0){
//无向图对称 map[i][x]--; } dfs(i, isyou); break;//一次 } }}void fleury(int x,int isyou){
s.push(x); int t = x; while (!s.empty()){
int k = 0; t = s.top(); s.pop(); for (int i = 1; i <= n; ++i){
if (map[t][i] >= 1){
//有边 k = 1; break; } } if (k == 0){
q.push(t); } else{
dfs(t,isyou); } } while (!q.empty()){
cout << q.top() << " "; q.pop(); }}int main(){
cin >> n >> m; int x, y,isyou; int du[N]; int duc[N]; int sum = 0; for (int i = 1; i < 1000005; ++i) //初始化个集合,数组值等于小标的点为根节点。 {
set[i] = i; } memset(du, 0, sizeof(du)); memset(vis, false, sizeof(vis)); memset(duc, 0, sizeof(duc)); memset(map, 0, sizeof(map)); cout << "是否为有向图 1.是,0,不是\n"; cin >> isyou; for (int i = 1; i <= m; ++i){
cin >> x >> y; int fx = find(x), fy = find(y); set[fx] = fy; map[x][y]++; duc[x]++; du[y]++; if (isyou == 0){
map[y][x]++; duc[y]++; du[x]++; } } int duflag; int flag = 1; for (int i = 1; i <= n; ++i){
if ((du[i] + duc[i]) % 2 == 1){
sum++; if (du[i]
duc[i]){ max = 1; } } } if (min != 1 || max != 1){ cout << "你输入的是非欧拉图" << endl; exit(0); } } else{ cout << "你输入的是非欧拉图" << endl; exit(0); } } if (sum == 0 || sum == 2){ // cout << "开始" << endl; fleury(flag,isyou); } return 0;}/*案例一4 401 22 33 44 1案例二6 712 12 44 33 21 66 55 1*/

转载地址:http://oggwi.baihongyu.com/

你可能感兴趣的文章
windows获得文件大小
查看>>
Host 'ETCV3' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
查看>>
OCILIB在VS2008中的使用
查看>>
OCILIB VC2008 效率测试
查看>>
PL/SQL设置NUMBER显示为字符串
查看>>
linux ftp 脚本 -- 使用程序执行脚本
查看>>
MFC CListBox的使用
查看>>
VS2008向MFC 对话框 添加托盘图标(显示和消失)
查看>>
redhat中vsftp开机自启动
查看>>
MySQL存储过程,生成大量数据
查看>>
查询字段值出现多次的字段值
查看>>
SQL Server表存在则进行查重 SQL语句
查看>>
redhat 9 下sqlite 3的安装及编程
查看>>
两个同步表的字段复制.Oracle.
查看>>
windows MySQL 报“Got a packet bigger than 'max_allowed_packet' bytes”错误,解决过程.
查看>>
在Redhat9下静态编译glib库.
查看>>
CImg库编译使用.
查看>>
SQL Server循环执行动态SQL语句.
查看>>
ubuntu10.4网卡名由eth0改为eth4,导致获得不了IP地址.解决方法.
查看>>
CheckPoint关键词做字段名使用.
查看>>