DFS || HDU 2181
题意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。
前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出
输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后个一个: 后列出经过的城市
dfsdfsdfsdfsdfsdfs…………
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <queue>
- using namespace std;
- #define SZ 2010
- bool vis[];
- int path[];
- struct node
- {
- int a, b, c;
- }city[];
- int ct[][];
- int cnt = ;
- int m;
- void dfs(int x, int k)
- {
- path[k] = x;
- for(int i = ; i <= ; i++)
- {
- int t = ct[x][i];
- if(t == m && k == )
- {
- cnt++;
- printf("%d: ", cnt);
- for(int i = ; i < ; i++) printf(" %d", path[i]);
- printf(" %d\n", m);
- return;
- }
- if(t == m) continue;
- if(!vis[t])
- {
- vis[t] = ;
- dfs(t, k+);
- vis[t] = ;
- }
- }
- }
- int main()
- {
- for(int i = ; i <= ; i++)
- for(int j = ; j <= ; j++)
- scanf("%d", &ct[i][j]);
- for(int i = ; i <= ; i++) sort(ct[i]+, ct[i]+);
- while(true)
- {
- scanf("%d", &m);
- if(m == ) break;
- cnt = ;
- memset(vis, , sizeof(vis));
- vis[m] = ;
- dfs(m, );
- }
- return ;
- }
DFS || HDU 2181的更多相关文章
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 2181 哈密顿绕行世界问题 dfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=2181 只有20个城市,而且每个点的度数恰好是3,也就意味着,对于即将进入环中的点,入度1,出度2,下一个点只有两 ...
- HDU 2181 哈密顿绕行世界问题 (DFS)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- (step4.3.8)hdu 2181(哈密顿绕行世界问题——DFS)
题目大意:通俗点讲就是,输出所有从m城市出发,便利所有城市之后又能回到m城市的序列...... 解题思路:DFS 1)用map[][]来存储城市之间的连通情况.用used[]存储某个城市的使用情况(即 ...
- HDU - 2181 dfs [kuangbin带你飞]专题二
保存每个节点的下一个节点一直往下面走就行了,不能重复经过某个点,当经过的点达到20个而且当前节点的下一个节点是起点就打印答案. AC代码 #include<cstdio> #include ...
- hdu 2181 哈密顿绕行世界问题【DFS】
题目链接 题目大意: Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input ...
- HDU 2181 哈密顿绕行世界问题(DFS)
Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前20行的第i行有3个数, ...
- HDU 2181 哈密顿绕行世界问题 (DFS)
题目链接:https://vjudge.net/contest/185350#problem/C 题目大意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城 ...
- HDU - 2181 哈密顿绕行世界问题 dfs图的遍历
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- USACO 5.4 tour的dp解法
题意:有n个点排成序列,两个人甲乙从1出发,到达n,中间的点不允许到达两次,只能从左向右走,问最多两人访问多少点. (膜大佬) 解: dp f(i, j) 表示甲到了i点,乙到了j点,两人最多访问了多 ...
- Table View Programming Guide for iOS---(七)---Managing Selections
Managing Selections 管理选择 When users tap a row of a table view, usually something happens as a result ...
- React 从入门到进阶之路(八)
之前的文章我们介绍了 React中的组件.父子组件.React props父组件给子组件传值.子组件给父组件传值.父组件中通过refs获取子组件属性和方法.接下来我们将介绍 React propTyp ...
- J20170422-hm
ワイルドスクリプト wild script 通配符 シェルスクリプト shell脚本
- Codeforces 550B 【暴力】
题意: 有n个数字, 要求在这n个数中选出至少两个数字, 使得它们的和在L,R之间,并且最大的与最小的差值要不小于x 思路: 撒比了啊... 根据状态的话一共也就是2^15-直接暴力,二进制的小魅力还 ...
- poj2186【利用强连通分量】
题意: 有n头奶牛,然后有个规则是A->B,B->C,那么A->C: A觉得B受欢迎,B觉得C受欢迎,那么A觉得C受欢迎: 求:被其他所有牛都欢迎的牛的数量: 思路: 原来的思路: ...
- Template Code 无法使用 this.Host 报错
问题显示: Error 6 Compiling transformation: 'Microsoft.VisualStudio.TextTemplatingBED07DAE3B6FD53FA94701 ...
- C#拷贝整个文件夹以及子目录和其中文件
private void CopyDirectory(string srcPath, string desPath) { string folderNam ...
- SP1805 Largest Rectangle in a Histogram
题目链接: 洛谷SP1805 题意: 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案) 输入格式: 有多组测试数据,每组数据占一行.输入零 ...
- 洛谷 P4135 作诗
分块大暴力,跟区间众数基本一样 #pragma GCC optimize(3) #include<cstdio> #include<algorithm> #include< ...