Rescate de emergencia && Campus Labyrinth && Introducción

Rescate de emergencia

Utilice un mapa para ayudar al instituto a determinar la distancia más corta desde el instituto para encontrar al Dr. Mike.

Plantilla bfs ordinaria

#include<bits/stdc++.h>
#define maxn 1010
using namespace std;
inline int read()
{
    
    
    int res=0,f=1;char ch=getchar();
    while(!isdigit(ch)){
    
    if(ch=='-')f=-f;ch=getchar();}
    while(isdigit(ch)){
    
    res=(res<<1)+(res<<3)+(ch&15);ch=getchar();}
    return res*f;
}
int n,ans[maxn][maxn];
char a[maxn][maxn];
int vis[maxn][maxn];
int dx[4]={
    
    0,0,1,-1};
int dy[4]={
    
    1,-1,0,0};
struct node
{
    
    
    int x,y;
    int tep;
};
int stx,sty,enx,eny;
queue<node>q;
int main()
{
    
    
    n=read();
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    cin>>a[i][j];
     
    node st;
    st.x=read();st.y=read();st.tep=0;
    q.push(st);
    vis[st.x][st.y]=1;
    q.push(st);
    enx=read();eny=read();
     
    while(!q.empty())
    {
    
    
        node k=q.front();
        q.pop();
        if(k.x==enx&&k.y==eny)
        {
    
    
            cout<<k.tep;
            return 0;
        }
        for(int i=0;i<4;i++)
        {
    
    
            int xx=k.x+dx[i];
            int yy=k.y+dy[i];
            if(!vis[xx][yy]&&a[xx][yy]=='0')
            {
    
    
                vis[xx][yy]=1;
                node ne;ne.x=xx;ne.y=yy;ne.tep=k.tep+1;
                q.push(ne);
            }
        }
    }
    return 0;
}

Laberinto del campus

La plantilla bfs es la misma que la anterior.

empezando

La plantilla bfs es la misma que la anterior.

Supongo que te gusta

Origin blog.csdn.net/yhhy666/article/details/109240250
Recomendado
Clasificación