博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
欧拉回路
阅读量:4342 次
发布时间:2019-06-07

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

求欧拉回路dfs代码:

#include 
#include
using namespace std;int n,m,dis[101],dis_=0,root=0x7fffffff,path[10001],now=0;bool map[101][101],ok=false,if_[101];void euler(int now,int gra){ path[gra]=now; if(gra==m+1) { ok=true; return ; } for(int i=1;i<=n;i++) { if(map[now][i]) { map[now][i]=false; map[i][now]=false; euler(i,gra+1); if(ok) return; map[now][i]=true; map[i][now]=true; } }}void euler_back(int now,int gra){ path[gra]=now; if(gra==m+1) { if(now==root) ok=true; return ; } for(int i=1;i<=n;i++) { if(map[now][i]&&!if_[i]) { map[now][i]=false; map[i][now]=false; euler_back(i,gra+1); if(ok) return; map[i][now]=true; map[now][i]=true; } }}int main(){ scanf("%d%d",&n,&m); int from,to; for(int i=1;i<=m;i++) { scanf("%d%d",&from,&to); map[from][to]=true; map[to][from]=true; dis[from]++,dis[to]++; } for(int i=1;i<=n;i++) { if(dis[i]%2) { root=min(i,root); dis_++; } } if(dis_==2) { if_[root]=true; euler(root,1); if(ok) { cout<<"true 1"<

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6286710.html

你可能感兴趣的文章
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>