讨论 / WA80哪错了
666yuchen 2018-03-07 13:44:17
点我顶贴 收藏 删除
#include<iostream>

#include<cstdio>

#include<cstdlib>

using namespace std;

long long n,m,gs,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0},head,tail,xx,yy,tt,p;

char ch,a[1005][1005],b[1005][1005];

struct o

{

long long x,y,t;

}opens[1000005];

void bfs(int x,int y)

{

head=1;tail=1;

opens[1].x=x;opens[1].y=y;opens[1].t=0;b[x][y]='1';

while(head<=tail)

{

for(int i=0;i<4;i++)

{

xx=opens[head].x+dx[i];

yy=opens[head].y+dy[i];

if(a[xx][yy]>='A'&&a[xx][yy]<='Z')

{

p=0;

for(int j=1;j<=n;j++)

{

for(int k=1;k<=m;k++)if(a[xx][yy]==a[j][k]&&xx!=j&&yy!=k){xx=j;yy=k;p=1;break;}

if(p==1)break;

}

}

tt=opens[head].t+1;

if(b[xx][yy]=='1'||a[xx][yy]=='1'||xx<1||yy<1||xx>n||yy>m)continue;

if(xx==n&&yy==m){cout<<tt;exit(0);}

b[xx][yy]='1';

tail++;

opens[tail].x=xx;opens[tail].y=yy;opens[tail].t=tt;

}

head++;

}

}

int main()

{

cin>>n>>m;

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

cin>>a[i][j];

bfs(1,1);

cout<<"No Solution.";

return 0;

}

查看更多回复
提交回复