HDOJ 2181 哈密顿绕行世界问题
来源:互联网 发布:qq卡屏源码 编辑:程序博客网 时间:2024/05/17 00:51
题意:已知有20个城市,有些城市之间有一条路,判断有多少种走法使得不经过同一个城市能回到起点
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181
思路:dfs+回溯,判断是否回到原点即可
注意点:无
以下为AC代码:
Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor129707522015-02-20 22:34:38Accepted21810MS1632K2024 BG++luminous11#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <vector>#include <deque>#include <list>#include <cctype>#include <algorithm>#include <climits>#include <queue>#include <stack>#include <cmath>#include <map>#include <set>#include <iomanip>#include <cstdlib>#include <ctime>#define ll long long#define ull unsigned long long#define all(x) (x).begin(), (x).end()#define clr(a, v) memset( a , v , sizeof(a) )#define pb push_back#define mp make_pair#define read(f) freopen(f, "r", stdin)#define write(f) freopen(f, "w", stdout)using namespace std;//const double pi = acos(-1);//const double eps = 1e-10;//const int dir[[4][2] = { 1,0, -1,0, 0,1, 0,-1 };vector<int> adj[25];int be;int cnt = 0;bool vis[25];int ans[25];bool init(){ int a; clr ( ans, 0 ); clr ( vis, 0 ); for ( int i = 1; i <= 20; i ++ ){ adj[i].clear(); for ( int j = 0; j < 3; j ++ ){ cin >> a; if ( a == 0 )return 0; adj[i].pb ( a ); } sort ( all ( adj[i] ) ); } cin >> be;}void print( int len ){ cout << ++ cnt << ": "; for ( int i = 0; i <= len; i ++ ){ cout << ' ' << ans[i]; } cout << endl;}void dfs ( int x, int len ){ if ( len == 20 ){ for ( int i = 0; i < adj[x].size(); i ++ ){ if ( adj[x][i] == be ){ ans[len] = be; print( len ); return; } } } for ( int i = 0; i < adj[x].size(); i ++ ){ if ( vis[adj[x][i]] == 0 ){ vis[adj[x][i]] = 1; ans[len] = adj[x][i]; dfs ( adj[x][i], len + 1 ); vis[adj[x][i]] = 0; } }}void solve(){ ans[0] = be; vis[be] = 1; dfs ( be, 1 ); return;}int main(){ ios::sync_with_stdio( false ); while ( init() ){ solve(); } return 0;}
0 0
- HDOJ 2181 哈密顿绕行世界问题
- HDOJ 2181 哈密顿绕行世界问题
- HDOJ 哈密顿绕行世界问题
- HDOJ 2181 哈密顿绕行世界问题 (dfs)
- HDOJ 2181 哈密顿绕行世界问题 (回溯)
- HDOJ--2181--哈密顿绕行世界问题【DFS】
- HDOJ 题目2181 哈密顿绕行世界问题(DFS)
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- 哈密顿绕行世界问题 2181
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- HDU-2181-哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- 在Eclipse下编译C++程序出现的Launch failed.Binary not found.问题的解决方法
- UML基本架构建模--图的术语和概念(二)
- 97年世界编程大赛一等奖作品代码--太牛了,偶像!
- UML基本架构建模--图的术语和概念(三)
- WebRTC音视频引擎研究(3)--临界区设计、临界资源访问--CriticalSectionWrapper
- HDOJ 2181 哈密顿绕行世界问题
- UML基本架构建模--图的通用建模技术(一)
- 命令行开WiFi助记
- hadoop1.2.1安装配置
- 脑袋中有好多东西,都写出来吧,给大脑清清空间
- mac 10.9.5 安装hadoop 1.2.1 运行wordcount
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- javascript学习十:面向对象之对象的创建
- MySQL 主键与索引的联系与区别分析