DFS || HDU 2181
2024-08-30 15:46:11
题意:一个规则的实心十二面体,它的 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 ;
}
最新文章
- VisualStudio自动编码插件(Autocode——devprojects.net)
- 两种include方式及filter中的dispatcher解析
- android中的layoutparams参数使用的简单总结
- SecureCrt脚本(二)二级对象之Dialog
- HTTP报文
- Android开发之IPC进程间通信-AIDL介绍及实例解析
- 我的Hibernate入门
- 腾讯QQ企业邮箱POP3/SMTP设置
- 项目总结之SSI (一)
- asp.net 2.0 Session丢失问题
- [Eclipse]代码已被写入关于如何切换到unix在新行
- HDU 1054 Strategic Game(树形DP)
- mysql用存储过程插入百万条数据, 及查询优化
- Scrum 冲刺 第二日
- c#动态加载卸载DLL
- java基础-开发工具IDEA
- 剑指Offer_编程题_2
- CentOS 安全优化
- 尚硅谷springboot学习12-profile
- @ResponseBody使用须知