Pagini recente » Cod sursa (job #779652) | Cod sursa (job #67115) | Cod sursa (job #3194063) | Cod sursa (job #1054728) | Cod sursa (job #3138603)
#include <bits/stdc++.h>
using namespace std;
ifstream f("pescari.in");
ofstream g("pescari.out");
int n,i,j,a[1005][1005],x,b[1005][10005],y,m,p;
const int di[]={-1,-1,0,1,1,1,0,-1};
const int dj[]={0,1,1,1,0,-1,-1,-1};
queue< pair<int, int> > q;
char c;
bool ok(int i, int j)
{
if ( i<=0 || j<=0 || i>n || j>m )
return false;
return true;
}
void lee()
{
while( !q.empty() )
{
int i=q.front().first;
int j=q.front().second;
q.pop();
for(int k=0; k<8; k++ )
{
x=i+di[k];
y=j+dj[k];
if ( ok(x,y) && a[x][y]!=2 && b[x][y]>b[i][j]+1 )
{
b[x][y]=b[i][j]+1;
q.push({x,y});
}
}
}
}
int main()
{
f >> n >> m >> p;
for ( i=1; i<=n; i++ )
{
for ( j=1; j<=m; j++ )
{
f >> a[i][j];
b[i][j]=100000005;
if ( a[i][j]==2 )
{
q.push({i,j});
b[i][j]=0;
}
}
}
lee();
for (int i=1; i<=n; i++ )
for (int j=1; j<=m; j++ )
if ( a[i][j]==1 )
g << b[i][j] << '\n';
return 0;
}