Xxzxx @ 2018-04-30 20:53:43
现在不输出
求dalao/神犇
帮助呀
#include<bits/stdc++.h>
using namespace std;
int xx,yy,xy,yx,n,f=-1,r;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
string mp[1005];
struct no
{
int x,y,dep;
}q[1000009];
void bfs()
{
q[r].x=xx;
q[r].y=yy;
q[r].dep=0;
while(f<r)
{
no temp=q[++f];
if(temp.x==xy&&temp.y==yx)
{cout<<temp.dep;return;}
for(int i=0;i<4;i++)
{
int nx=temp.x+dir[i][0];
int ny=temp.y+dir[i][1];
if(mp[nx][ny]=="0"&&nx>0&&ny>0&&nx<=n&&ny<=n)
{
q[++r].x=nx;
q[r].y=ny;
q[r].dep=temp.dep+1;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>mp[i];
cin>>xx>>yy>>xy>>yx;
bfs();
}
by Xxzxx @ 2018-05-01 10:47:35
现在情况严重了
还是不输出
#include<bits/stdc++.h>
using namespace std;
int xx,yy,xy,yx,n,f=-1,r;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}},mp[10000][10000];
string s;
struct node
{
int x;
int y;
int dep;
}q[1000009];
void bfs()
{
q[r].x=xx;
q[r].y=yy;
q[r].dep=0;
while(f<r)
{
node temp=q[++f];
if(temp.x==xy&&temp.y==yx)
{cout<<temp.dep;return;}
for(int i=0;i<4;i++)
{
int nx=temp.x+dir[i][0];
int ny=temp.y+dir[i][1];
if(mp[nx][ny]==0&&nx>0&&ny>0&&nx<=n&&ny<=n)
{
mp[nx][ny]==1;
r++;
q[r].x=nx;
q[r].y=ny;
q[r].dep=temp.dep+1;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s;
for(int j=1;j<=n;j++)
mp[i][j]=s[j-1];
}
for(int i=1;i<=n;i++)
q[i].dep=2147483647;
cin>>xx>>yy>>xy>>yx;
bfs();
}