欧拉回路是指不重复地走过所有路径的回路,而哈密尔顿环是指不重复地走过所有的点,并且最后还能回到起点的回路。
 代码如下:
#include<iostream>
#include<cstring> using namespace std;
const int Maxn=; int start,lengt,x,n;
bool visited[Maxn],v1[Maxn];
int ans[Maxn],num[Maxn];
int g[Maxn][Maxn]; void print()
{
int i;
for (i=;i<=lengt;i++)
cout<<ans[i]<<' ';
cout<<endl;
} void dfs(int last,int i)
{//访问点i,last表示上次访问的点
visited[i]=;//标记为已经访问过
v1[i]=;//标记为已在一张图中出现过
ans[++lengt]=i;//记录下答案
for (int j=;j<=num[i];j++)
{//x为记录的第几个数
if (g[i][j]==x&&g[i][j]!=last) {//回到起点,构成哈密尔顿环
ans[++lengt]=g[i][j];
print();//如果找到了一个环,则输出ans数组
lengt--;
break;
}
if (!visited[g[i][j]]) dfs(i,g[i][j]);//遍历与i相关联所有未访问过的顶点
}
lengt--;
visited[i]=;//回溯,但需要注意的是v1的值不恢复
} int main() {
cin>>n;
int m;
cin>>m;
for(int i=;i<=m;i++) {
int x,y;
cin>>x>>y;
g[x][++num[x]]=y;//表示x所对的第几个出度所指的数为y,说明xy之间能够“行走”
g[y][++num[y]]=x;//同上
}
for(x=;x<=n;x++)
//每一个点都作为起点尝试访问,因为不是从任何一点开始都能找过整个图的
if (!v1[x]) {//如果点x不在之前曾经被访问过的图里面的话
lengt=;//定义一个ans数组存答案,lengt记答案的长度
dfs(,x);
}
return ;
}

哈密尔顿环x的更多相关文章

  1. Codeforce 263D Cycle in Graph 搜索 图论 哈密尔顿环

    You've got a undirected graph G, consisting of n nodes. We will consider the nodes of the graph inde ...

  2. poj 2288 Islands and Bridges_状态压缩dp_哈密尔顿回路问题

    题目链接 题目描述:哈密尔顿路问题.n个点,每一个点有权值,设哈密尔顿路为 C1C2...Cn,Ci的权值为Vi,一条哈密尔顿路的值分为三部分计算: 1.每一个点的权值之和 2.对于图中的每一条CiC ...

  3. 旅行商问题(TSP)、最长路径问题与哈密尔顿回路之间的联系(归约)

    一,旅行商问题与H回路的联系(H回路 定义为 哈密尔顿回路) 旅行商问题是希望售货员恰好访问每个城市一次,最终回到起始城市所用的费用最低,也即判断图中是否存在一个费用至多为K的回路.(K相当于图中顶点 ...

  4. CodeForces - 325E:The Red Button (哈密尔顿 转 欧拉回路)

    Piegirl found the red button. You have one last chance to change the inevitable end. The circuit und ...

  5. poj 2280 Islands and Bridges 哈密尔顿路 状压dp

    题目链接 题意 给定一个\(N\)个点的无向图,求一条哈密尔顿路径\(C_1C_2...C_n\),使其\(value\)最大. \(value\)的计算方式如下:\[\begin{aligned}v ...

  6. poj 2288 Islands and Bridges——状压dp(哈密尔顿回路)

    题目:http://poj.org/problem?id=2288 不知为什么记忆化搜索就是WA得不得了! #include<iostream> #include<cstdio> ...

  7. 【BZOJ 1997】[Hnoi2010]Planar

    Description Input Output   找到哈密尔顿环之后找到不在哈密尔顿环上的边 这些边如果同时在里面相交那他们同时在外面也相交,所以只能一外一内,这就变成了2-SAT,判一下就好了 ...

  8. 【转】NP-Hard和NP-Complete的区别

    原文来自:http://hi.baidu.com/nuclearspace/item/e0f8a1b777914974254b09f4 对 NP-Hard问题和NP-Complete问题的一个直观的理 ...

  9. NOIP 提高组必会!(转)

    1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序)2.DFS/BFS 也就是搜索算法,剪枝务必要学! 学宽搜的时候学一下哈希表!3.树 ①遍历 ②二叉树 ③二叉排序树(查找.生成.删除) ④ ...

随机推荐

  1. sql server如何精准匹配字符中的字符,绝对匹配

    举例: 我现在是需要查询这字段里包含1的数据  我如果直接charindex,那么11,12也会被包含. 解决(1): select * from ( select '1,2,12,111' as s ...

  2. MateBook 换内存条

    欢迎关注微信公众号:猫的尾巴有墨水 为啥要拆MateBook D笔记本? 最近这个Windows 10更新后,内存暴增,每次禁用windows update和同步服务模块后,依然不能彻底解决内存爆炸的 ...

  3. 蚂蚁分类信息商家发布文章、商品外链及远程图片自动添加nofollow属性

    蚂蚁商户发布文章.商品是可以添加外链或者直接用外部图片,但是这对分类网站运营不利. 所以要对外链进行过滤,演示网站保洁,蚂蚁分类的源码. 下面就说下怎么处理自动给外链自动加上nofollow属性. 1 ...

  4. 使用TableSnapshotInputFormat读取Hbase快照数据

    根据快照名称读取hbase快照中的数据,在网上查了好多资料,很少有资料能够给出清晰的方案,根据自己的摸索终于实现,现将代码贴出,希望能给大家有所帮助: public void read(org.apa ...

  5. tomcat搭建webDav

    工具准备: tomcat-8.0.53 前言:由于工作需要,希望自己搭建webdav服务端,刚开始用windowsServer 2012 R2版本自带的IIS服务器搭建,搭建好之后浏览器可以访问,但无 ...

  6. JVM - Java虚拟机规范官方文档

    Java虚拟机规范官方文档    

  7. vscode中外部引入js文件以及里面相应的方法

    随便写一个js文件,定义一个方法名,并且在组件中进行引用就算成功 ###~js function shuchu(){     console.log(1) } export { shuchu };   ...

  8. Oracle VM VirtualBox 安装 Centos7 并配置静态IP

    新建虚拟电脑 选择类型和版本 设置内存大小 现在创建虚拟硬盘 选择VDI 硬盘足够就选择 固定大小 选择虚拟硬盘存储位置不要放在默认的C盘下,设置大小为30G 等待创建虚拟硬盘 虚拟硬盘创建成果之后 ...

  9. 微信支付成功没有回调遇到的坑 onBridgeReady getBrandWCPayRequest wx.chooseWXPay

    最近在调微信支付,遇到一个问题,就是支付成功回调不执行的. 遇到的问题就是   苹果手机 支付成功没有进到回调函数里,但是支付的时候,点击取消支付是可以进到回调函数里的.    安卓手机测试一切正常! ...

  10. 服务命令(systemctl的使用)

    常用的service与systemctl命令的对比 应用举例: ●start:开启服务 ●stop:停止服务 ●status:参数来查看服务运行情况 ●restart:重新加载服务 应用举例·: #启 ...