# SDUT 3361 数据结构实验之图论四：迷宫探索

### 数据结构实验之图论四：迷宫探索

Time Limit: 1000MS Memory Limit: 65536KB

```1
6 8 1
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5```

#### Example Output

`1 2 3 4 5 6 5 4 3 2 1`

### DQE:

``` 1 #include <iostream>
2 #include <cstdio>
3
4 using namespace std;
5
6 #define MVN 1010    /*本地运行时改为100左右才可以，不然运行时错误，提交时改为1000+可AC*/
7
9 {
10     int w;
11     char *info;
12 }AM;
13
14 typedef struct MGraph
15 {
16     int vex[MVN];
17     AM arc[MVN][MVN];
18     int vexnum,arcnum;
19     int k;
20 }MG;
21
22 void creat(MG &G)
23 {
24     int i,j,k;
25     for(k=1;k<=G.vexnum;k++)
26     {
27         G.vex[k]=k;
28     }
29     for(k=1;k<=G.arcnum;k++)
30     {
31         scanf("%d %d",&i,&j);
32         G.arc[i][j].w=1;
33         G.arc[j][i].w=1;
34     }
35 }
36
37 int count=0;    //计数变量
38 int DFS(MG &G,bool *visited,int i)
39 {
40     count++;
41     visited[i]=true;
42     if(G.vex[i]==G.k)
43         printf("%d",G.k);
44     else
45         printf(" %d",G.vex[i]);
46     int k;
47     for(k=1;k<=G.vexnum;k++)
48     {
49         if(G.arc[i][k].w>0&&visited[k]==false)
50         {
51             DFS(G,visited,k);
52             printf(" %d",G.vex[i]);
53         }
54     }
55     return count;
56 }
57
58 int main()
59 {
60     int t;
61     scanf("%d",&t);
62     while(t--)
63     {
64         MG G={0};
65         scanf("%d %d %d",&G.vexnum,&G.arcnum,&G.k);
66         creat(G);
67         int k;
68         for(k=1;k<=G.vexnum;k++)
69         {
70             if(G.vex[k]==G.k)
71                 break;
72         }
73         bool visited[MVN]={false};
74         count=0;
75         if(DFS(G,visited,k)!=G.vexnum)
76             printf(" 0\n");
77         else
78             printf("\n");
79     }
80     return 0;
81 }
82
83 /***************************************************
84 User name: ***
85 Result: Accepted
86 Take time: 12ms
87 Take Memory: 1784KB
88 Submit time: 2016-11-08 21:57:57
89 ****************************************************/```

## SDUT OJ 数据结构实验之栈四：括号匹配

#include<iostream> #include<stdio.h> using namespace std; int main() { char a[51],b[51]; int i,top; while(gets(a)!=NULL) { top=-1; for(i=0;a[i]!='\0';i++) { if(a[i]=='{'||a[i]=='['||a[i]=='(') { b[++top]=a[i]; } else if(a[i]=='}') { if(b[top]=