求助,本蒟蒻代码调了好久才65pts,剩下的点全WA
查看原帖
求助,本蒟蒻代码调了好久才65pts,剩下的点全WA
308927
黄毛鸭子楼主2021/10/15 21:10

RT

#include<bits/stdc++.h>
using namespace std;
struct node{
    int x,y,dis;
};
queue<node>q;
char a[3009][3009];
bool vis[3009][3009];
int n,m;
int XY[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
int startx,starty;
inline void go_next_node(int &nx,int &ny)
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]==a[nx][ny]&&(i!=nx||j!=ny))
            {
                nx=i,ny=j;
                return;
            }
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
    cin>>n>>m;
    string s;
    for(int i=1;i<=n;i++)
    {
        getline(cin,s);
        for(int j=1;j<=m;j++)
        {
            a[i][j]=s[j-1];
            if(a[i][j]=='@') startx=i,starty=j;
        }
    }
    q.push((node){startx,starty,0});
    while(!q.empty())
    {
        node temp=q.front();
        q.pop();
        if(a[temp.x][temp.y]=='='){cout<<temp.dis;return 0;}
        if(a[temp.x][temp.y]>='A'&&a[temp.x][temp.y]<='Z')
        	go_next_node(temp.x,temp.y);
        for(int i=0;i<=3;i++)
        {
            int nextx=temp.x+XY[i][0],nexty=temp.y+XY[i][1];
            if(nextx>=1&&nextx<=n&&nexty>=1&&nexty<=m&&a[nextx][nexty]!='#'&&!vis[nextx][nexty])
            {
                vis[nextx][nexty]=1;
                q.push((node){nextx,nexty,temp.dis+1});
            }
        }
    }
    return 0;
}
2021/10/15 21:10
加载中...