Pagini recente » Cod sursa (job #924787) | Cod sursa (job #2739500) | Cod sursa (job #791992) | Cod sursa (job #799323) | Cod sursa (job #901378)
Cod sursa(job #901378)
#include <cstdio>
using namespace std;
const int dx[4] = {1,0,0,-1};
const int dy[4] = {0,-1,1,0};
int j,k,ok,n,m,l,xi,yi,q[2][25001],i,dr,t[25001],a[151][151],b[151][151];
inline void expand()
{
int x,y,i,st=0;
while (st<=dr)
{
st++;
x=q[0][st];
y=q[1][st];
for (i=0;i<4;i++)
if (x+dx[i]>0 && y+dy[i]>0 && x+dx[i]<=n && y+dy[i]<=m && t[a[x+dx[i]][y+dy[i]]] && b[x+dx[i]][y+dy[i]]==-1)
{
b[x+dx[i]][y+dy[i]]=0;
t[(x+dx[i]-1)*m+y+dy[i]]=1;
ok=1;
dr++;
q[0][dr]=x+dx[i];
q[1][dr]=y+dy[i];
}
}
}
int main()
{
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
if (k%m==0) {xi=k/m;yi=m;} else {xi=k/m+1;yi=k%m;};
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++) b[i][j]=-1;
t[k]=1;
b[xi][yi]=0;
q[0][1]=xi;
q[1][1]=yi;
dr=1;
ok=0;
expand();
while (ok)
{
ok=0;
expand();
}
printf("%d\n",dr);
return 0;
}