19 条题解

  • 0
    @ 2025-12-29 16:52:45
    #include<bits/stdc++.h>
    using namespace std;
    int fx[5]={0,-1,1,0,0},fy[5]={0,0,0,-1,1},n,m,ans=INT_MAX,x,y,p,f[1100][200];
    char a[1100][200];
    void sy(int x,int y,int s)
    {
    	if (a[x][y]=='*')
    	{
    		p=1;
    		ans=min(ans,s);
    		return;
    	}
    	for (int i=1;i<=4;i++)
        {
            int tx=x+fx[i],ty=y+fy[i];
    		    if (tx<=n&&tx>=1&&ty>=1&&ty<=m&&a[tx][ty]!='#')
    			   if (s+1<f[tx][ty])
    			   {
    				   f[tx][ty]=s+1;
    				   sy(tx,ty,s+1);
    		       }
        }
    }
    int main() 
    {
    	cin>>n>>m;
    	for (int i=1;i<=n;i++)
    		for (int j=1;j<=m;j++)
    		{
    			cin>>a[i][j];
    			if (a[i][j]=='@') x=i,y=j;
    			f[i][j]=INT_MAX;
    		}
    	sy(x,y,0);
    	if (p==1) cout<<ans;
    	  else cout<<"-1";
    }
    

    信息

    ID
    103
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    47
    已通过
    15
    上传者