数据结构实验之图论四:迷宫探索 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关:请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input 连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000).边数M(M <= 3000)和起始结点编号S,随后M行对应M条边,…
分析:起点已知,开个数组来存放路径,注意 vis 数组要初始化!另外,不能忘记了题目还要求回去的路径,只要在 dfs 之后加上就可以了. #include <bits/stdc++.h> using namespace std; int path[1000 * 2 + 10]; int vis[1005]; int gra[1002][1002]; int num = 0; void dfs(int x, int n) { vis[x] = 1; path[num ++] = x; for(i…
题目来自于严蔚敏<数据结构>,参考伪代码实现的程序: #include <stdio.h> #include <malloc.h> //记录通道块在迷宫矩阵当中的横.纵坐标 struct Position{ int x; int y; }; //放入栈当中的通道块元素 struct SElement { int ord;//记录此通道块在整个通道当中的次序 Position p;//记录此通道块在矩阵当中的位置 int di;//记录下一次测试这一路径的临近路径的位置…