0
点赞
收藏
分享

微信扫一扫

数据结构与算法题目集(中文) - 7-33 地下迷宫探索(30 分)


题目链接:​​点击打开链接​​

题目大意:略。

解题思路:略。

AC 代码

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

const int maxn=1010;

int g[1010][1010], ans[2*maxn], vis[maxn];
int n,m,s,len;

void init()
{
len=0;
mem(g,0);
mem(vis,0);
}

void dfs(int s)
{
vis[s]=1;
for(int i=1; i<=n; i++)
{
if(g[s][i]==1&&!vis[i])
{
ans[len++]=i;
g[i][s]=g[s][i]=-1;
dfs(i);
ans[len++]=s;
}
}
}

int main()
{
while(~scanf("%d%d%d",&n,&m,&s))
{
init();
int u,v;
for(int i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
g[u][v]=g[v][u]=1;
}
ans[len++]=s;
dfs(s);

for(int i=1;i<=n;i++)
if(vis[i]!=1){ ans[len++]=0; break; }

printf("%d",ans[0]);
for(int i=1;i<len;i++) printf(" %d",ans[i]);
puts("");
}

return 0;
}


举报

相关推荐

0 条评论