[kuangbin带你飞]专题二 搜索进阶 C - 哈密顿绕行世界问题(HDU 2181)
2015-11-29 16:44
525 查看
题目链接:哈密顿绕行世界问题(HDU 2181)
思路
起点和终点相同的dfs
代码
思路
起点和终点相同的dfs
代码
#include <stdio.h> #include <iostream> #include <vector> #include <math.h> #include <algorithm> #include <queue> #include <string.h> #include <set> #include <stack> #include <stdlib.h> #include <time.h> using namespace std; bool v[21][21];//保存结点连通情况 bool f[21];//记录已经过的结点 int p[21];//记录路径 int num; void dfs(int m, int x, int k) { p[k] = x; if(k == 20) { if(x == m) { cout<<num++<<": "; for(int i=0;i<=20;++i) cout<<" "<<p[i]; cout<<endl; } return; } for(int i=1;i<=20;++i) { if(!f[i] && v[i][x]) { f[i] = 1; dfs(m, i, k+1); f[i] = 0; } } } int main() { int a,b,c; while(1) { memset(f, 0, sizeof(f)); memset(v, 0, sizeof(v)); num = 1; cin>>a; if(a == 0) break; cin>>b>>c; v[1][a] = v[1][b] = v[1][c] = 1; for(int i=2;i<=20;++i) { cin>>a>>b>>c; v[i][a] = v[i][b] = v[i][c] = 1; } int m; cin>>m; dfs(m, m, 0); } return 0; }
相关文章推荐
- python实现邮件发送功能
- 修改Broforce无限人数,死亡不减反加
- 第八章实践
- linux目录文件权限
- 字典树
- 字典树
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(五):设置背景
- 源码解析HashMap
- 给老婆买的劳力士
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(五):设置背景
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(五):设置背景
- spring整合hibernate(注解、xml)applicationContext.xml配置
- C++ string和stringstream用法总结(转载)
- (七)swift新建首页(整合TabBar和NavigationBar)
- android-当android studio更新时遇到Connetion failed
- 合并a[0..mid]和a[mid+1,n-1],其中这两个数组分别有序
- 【HTML5】WebSocket和SSE
- 算法之LCA与RMQ问题
- 水平梯度在sigma坐标对应形式
- C语言闰年判断函数