SDUT-3361_迷宫探索
数据结构实验之图论四:迷宫探索
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点?
Input
连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000)、边数M(M <= 3000)和起始结点编号S,随后M行对应M条边,每行给出一对正整数,表示一条边相关联的两个顶点的编号。
Output
若可以点亮所有结点的灯,则输出从S开始并以S结束的序列,序列中相邻的顶点一定有边,否则只输出部分点亮的灯的结点序列,最后输出0,表示此迷宫不是连通图。
访问顶点时约定以编号小的结点优先的次序访问,点亮所有可以点亮的灯后,以原路返回的方式回到起点。
Sample Input
1
6 8 1
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5
Sample Output
1 2 3 4 5 6 5 4 3 2 1
题解:迷宫探索问题,把所有的路都走一遍并且输出路径,利用DFS可以完成,注意存储路径。
*深度优先遍历和广度优先遍历
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int s[1050][1050];/*利用邻接矩阵来记录图*/
int n;/*n节点数量*/
int f[1050];/*记录点是否被遍历过*/
int S;/*起点*/
int pre[3050],num;/*记录路径*/
void DFS(int x)
{
int i;
f[x] = 1;
pre[num++] = x;/*记录当前的房间*/
for(i=1;i<=n;i++)
{
if(!f[i]&&s[x][i])
{
DFS(i);
pre[num++] = x;/*当遍历完一个房间时,会回到原来的房间,即回溯记录回来的路径*/
}
}
}
int main()
{
int t,m,i,j;
scanf("%d",&t);
while(t--)
{
memset(f,0,sizeof(f));
scanf("%d%d%d",&n,&m,&S);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
s[i][j] = i==j?1:0;
for(i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
s[a][b] = s[b][a] = 1;
}
num = 0;
DFS(S);
printf("%d",pre[0]);
for(i=1;i<num;i++)
printf(" %d",pre[i]);
if(num==2*n-1)/*无论图怎么话,如果全连通的话,最终都会经历(2*n-1)个点回到原点*/
printf("\n");
else
printf(" 0\n");
}
return 0;
}
SDUT-3361_迷宫探索的更多相关文章
- SDUT OJ 数据结构实验之图论四:迷宫探索
数据结构实验之图论四:迷宫探索 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT 3361 数据结构实验之图论四:迷宫探索
数据结构实验之图论四:迷宫探索 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有一个地下迷 ...
- 地下迷宫探索(dfs)
地下迷宫探索(30 分) 地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时 ...
- PTA地下迷宫探索
地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...
- PTA 7-33 地下迷宫探索(深搜输出路径)
地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...
- pta习题集5-16 地下迷宫探索
地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...
- SDUT 1269-走迷宫(DFS打印路径)
走迷宫 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 有一个m*n格的迷宫(表示有m行.n列),当中有可走的也有不可走的,假 ...
- 数据结构实验之图论四:迷宫探索【dfs 求路径】
分析:起点已知,开个数组来存放路径,注意 vis 数组要初始化!另外,不能忘记了题目还要求回去的路径,只要在 dfs 之后加上就可以了. #include <bits/stdc++.h> ...
- 【数据结构】10分钟教你用栈求解迷宫老鼠问题超详细教程附C++源代码
问题描述 给定一张迷宫地图和一个迷宫入口,然后进入迷宫探索找到一个出口.如下图所示: 该图是一个矩形区域,有一个入口和出口.迷宫内部包含不能穿越的墙壁或者障碍物.这些障碍物沿着行和列放置,与迷宫的边界 ...
随机推荐
- TCP/TP:DNS区域(Zone)
之前阅读资料不是特别明白,看到一个博主的解释,豁然开朗,特此记录. https://blog.csdn.net/huangzx3/article/details/79347556 DNS区域(ZONE ...
- stream求集合元素的属性值最值
Person p1 = new Person("张三", new BigDecimal("10.0"));Person p2 = new Person(&quo ...
- 生成中国地区随机IP
#随机生成IP 中国区 public function randip($member){ if($member['user_ip']){ if($member ...
- Django项目:CRM(客户关系管理系统)--44--36PerfectCRM实现King_admin密码修改
# king_urls.py # ————————02PerfectCRM创建ADMIN页面———————— from django.conf.urls import url from king_ad ...
- maven和java版本的对应关系
发布日期 版 必需的Java版本 链接 2018年6月21日 3.5.4 Java 7 宣布,发布说明,参考文档 2018年3月8日 3.5.3 宣布,发布说明,参考文档 2017年10月24日 ...
- 3_58 csapp 第三版的答案
参考代码了http://blog.csdn.net/scf0920/article/details/77543294 3.58 看汇编写c代码 long decode(long x, long y,l ...
- day18 10.使用ThreadLocal来解决问题
ThreadLocal是一个容器/集合,是一个Map集合.不管你跨多少层,只要你是同一个线程就可以取出来.Service和Dao是同一个线程.Service第一次调用JdbcUtils.getConn ...
- 【CRT相关配置】
1.选项——会话选项 2.回话调整如下: 3.日志文件记录保存,即保存所有输入的命令 文件名:%S-%T-%M-%D.txt,表示每天会存放到一个文件 选择:在连接上启动记录 和 追加到文件
- Phpstrom学习笔记
1.用*标识编辑过的文件 File - Editor – General - Editor Tabs 选中Mark modifyied tabs with asterisk
- 常用命令4-文件搜索命令 2- whereis
whereis比较局限,只能查看系统命令.