5-33 地下迷宫探索 (30分) __写错了。。

深度优先搜索算法解析
本文深入探讨了深度优先搜索(DFS)算法的实现原理及应用,通过具体代码示例展示了如何使用DFS解决图遍历问题,包括节点访问、路径查找等关键操作。
#include<iostream>
#define MAX 1002
using namespace std;
int g[MAX][MAX];
int been[MAX];
int n,m,s;
bool DFS(int start);
int re[MAX];
int index = 0;
int max_num = 0;
int main()
{
    int a,b;
    cin>>n>>m>>s;
    re[index++] = s;
    for(int i = 0;i < m; i++)
    {
        cin>>a>>b;
        if(a>max_num) max_num = a;
        if(b>max_num) max_num = b;
        g[a][b]=g[b][a]=1;
    }
    cout<<s;
    if(DFS(s))
    {
        //cout<<"susses!";
        //cout<<index<<endl;
        index = index-2;
        while(index>=0)
            cout<<' '<<re[index--];
        
    }
    else
    {
        //cout<<n<<endl;
        for(int i = 1 ;i<=n;i++)
            if(been[i])
                cout<<' '<<i;
        cout<<' '<<0;
    }
    return 0;
}
bool DFS(int start)
{
    int s = start , cnt = 1,i;
    been[s] = 1;
    while(cnt!=n)
    {
        int temp = s;
        int sign_this = 0;
        for(i =1;i <= max_num;i++)
        {
            if(g[s][i]&&(!been[i])&(i!=s))
            {
            
                cout<<" "<<i;
                re[index++] = i;
                g[s][i]=g[i][s]=0;
                been[i] = 1;
                s = i;
                cnt++;
                i = 1;
            }
        }
        if(s==temp)
        {
            been[s] = 0;
            return false;
            break;
        }
    }
    return true;

}

 

转载于:https://www.cnblogs.com/joeylee97/p/6022001.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值