问题标题: 酷町堂:4241超时10分

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者
#include<iostream>
using namespace std;
int n;
bool a[100][100];
int b[100][100],dir[9][2]={{0},{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
void dfs(int x,int y,int t)
{
    if(t<b[x][y])b[x][y]=t;
    if(t==n*n-1)return ;
    int nx,ny;
    for(int i=1;i<=4;i++)
    {
        nx=x+dir[i][0],ny=y+dir[i][1];
        if(nx>=1&&nx<=n&&ny>=1&&ny<=n)
            dfs(nx,ny,t+1);
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>a[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            b[i][j]=100000;
        }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(!a[i][j])
                b[i][j]=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(!b[i][j])
                dfs(i,j,0);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            cout<<b[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

 


0
已采纳
江齐悦
江齐悦
高级光能
高级光能

#include <iostream>

#include <cstring>

#include <queue>

using namespace std;

struct node{

int x,y,bs;

}tmp,h,st;

int n;

int map[101][101],time[101][101],f[101][101];

int dir[5][2]={{0},{1,0},{0,1},{-1,0},{0,-1}};

queue<node> q;

void bfs(int hh,int sh){

st.x=hh;st.y=sh;st.bs=0;

q.push(st);

while (!q.empty()){

h=q.front();

time[h.x][h.y]=min(time[h.x][h.y],h.bs);

q.pop();

for (int i=1;i<=4;i++){

int nx,ny;

nx=h.x+dir[i][0];

ny=h.y+dir[i][1];

if (nx<=n&&ny<=n&&!f[nx][ny]&&nx>=1&&ny>=1){

tmp.x=nx;

tmp.y=ny;

tmp.bs=h.bs+1;

q.push(tmp);

f[nx][ny]=1;

}

}

}

}

int main (){

cin>>n;

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

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

cin>>map[i][j];

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

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

if (map[i][j]==1)

time[i][j]=1000000;

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

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

memset(f,0,sizeof(f));

if (map[i][j]==0)

bfs(i,j);

}

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

{

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

cout<<time[i][j]<<" ";

cout<<endl;

}

return 0;

}

这是编译错误的代码,看看你改一下试试。

望采纳,谢谢!

0
0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

who can help me!!!(虽然已会,但不能结贴)

0
我要回答