HDU 2181 哈密顿绕行世界问题 (DFS)
2024-10-19 06:16:50
题目链接:https://vjudge.net/contest/185350#problem/C
题目大意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。输出从第m个城市出发经过每个城市1次又回到m的所有路线, 如有多个解,按字典序从小到大输出。
解题思路:题目很吓人,从起点DFS,重新回到起点是把路径输出来就行了,注意:下一个走的点要按从小到大的顺序,因为要使路径字典序从小到大。
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std; int point,cnt;
int map[][];
int vis[],path[]; void dfs(int pos,int len){
vis[pos]=;
//下个点按从小到大顺序走
for(int i=;i<=;i++){
if(map[pos][i]){
path[len]=pos;
if(i==point&&len==){
printf("%d: ",++cnt);
for(int i=;i<=;i++)
printf("%d ",path[i]);
printf("%d\n",point);
}
if(!vis[i])
dfs(i,len+);
}
}
vis[pos]=;
} int main(){
int a,b,c;
while(scanf("%d",&a)&&a){
cnt=;
memset(map,,sizeof(map));
scanf("%d%d",&b,&c);
map[][a]=map[][b]=map[][c]=;
for(int i=;i<=;i++){
scanf("%d%d%d",&a,&b,&c);
map[i][a]=map[i][b]=map[i][c]=;
}
scanf("%d",&point);
dfs(point,);
}
return ;
}
最新文章
- 从java文件和CS文件里查询方法使用次数工具
- PHP无限级分类的实现(不使用递归)
- JAVA格物致知基础篇:你所不知道的返回码
- 如何设置让基于matplotlib的绘图库正常的显示no-ascii字符(中文字符)
- uboot命令及内核启动参数
- Telerik RadGrid Demo
- 面试学到的css布局,细节影响了我的面试成绩
- Android解析XML
- 国产编程语言R++ V1.5发布
- Xcode开发和调试总结
- 【转载】FaceBook - How to add a Privacy Policy to your Apps?
- 关于oracle 还原数据库的要领
- POJ 3683 Priest John&#39;s Busiest Day
- Java虚拟机:JVM内存分代策略
- 使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上
- ubuntu1604使用之旅——Qt交叉编译移植
- 二、tableau常用难点操作
- python骚操作之...
- php 实现一致性hash 算法 memcache
- 拓普微智能TFT液晶显示模块
热门文章
- Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
- 框架----Django内置Admin
- PID控制算法的C语言实现九
- 使用gulp进行css、js压缩
- Vue.js随笔一(Webpack + Vue.js开发准备,含VNM、NPM、Node、Webpack等相关工具)
- [LeetCode] Matrix 值修改系列,例题 Surrounded Regions,Set Matrix Zeroes
- sweetAlert2
- <;LC刷题二>;回文字符串判断之leetcode125&;234
- sublime text3 编辑器常用快捷键
- uboot之---make smdk2410_config命令详细解析