前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构实验之图论四:迷宫探索【dfs 求路径】

数据结构实验之图论四:迷宫探索【dfs 求路径】

作者头像
Lokinli
发布2023-03-09 17:05:49
2080
发布2023-03-09 17:05:49
举报
文章被收录于专栏:以终为始以终为始

分析:起点已知,开个数组来存放路径,注意 vis 数组要初始化!另外,不能忘记了题目还要求回去的路径,只要在 dfs 之后加上就可以了。

代码语言:javascript
复制
#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(int i = 1; i <= n; i ++)
    {
        if(!vis[i] && gra[x][i]){
            vis[i] = 1;
            dfs(i,n);
            path[num ++] = x;
        }
    }
    return ;
}
int main()
{
    int t,n,m,s;
    while(~scanf("%d",&t)){
        while(t--)
        {
            scanf("%d%d%d",&n,&m,&s);
            for(int i = 0; i <= n; i ++)
            {
                for(int j = 0; j <= n; j ++ )gra[i][j] = 0;
            }
            int u,v;
            for(int i = 0; i < m; i ++){
                scanf("%d%d",&u,&v);
                gra[u][v] = gra[v][u] = 1;
            }
            num = 0;
            memset(vis,0,sizeof(vis));
            dfs(s,n);
            for(int i = 0; i < num; i ++)
            {
                if(i == 0)printf("%d",path[i]);
                else printf(" %d",path[i]);
            }
            if(num != 2 * n - 1)printf(" 0");
            printf("\n");
        }
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档