Pagini recente » Cod sursa (job #2612348) | Cod sursa (job #1303188) | Cod sursa (job #2327047) | Cod sursa (job #1427061) | Cod sursa (job #863508)
Cod sursa(job #863508)
#include<fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int dx[]={0,0,-1,0,1};
int dy[]={0,-1,0,1,0};
int m[151][151],i,j,tot,xi,yi,n,k,u,p,nr,xc,yc,key[30000],qx[30000],qy[30000],x[30000],y[30000],sol,sol1,M;
bool mat[151][151],check[151][151];
int main ()
{
f>>n>>M>>k;
key[k]=1;
while(k>M)
{
xi++;
k-=M;
}
++xi;
qx[1]=xi;
yi=k;
qy[1]=yi;
for(i=1;i<=n;++i)
for(j=1;j<=M;++j)
f>>m[i][j];
sol=1;
mat[xi][yi]=1;
nr=1;
sol1=-1;
while(sol!=sol1)
{
sol1=sol;
for(k=1;k<=nr;++k)
{
x[1]=qx[k];
y[1]=qy[k];
p=u=1;
while(p<=u)
{
for(i=1;i<=4;++i)
{
xc=x[p]+dx[i];
yc=y[p]+dy[i];
if(!key[m[xc][yc]]&&xc>0&&yc>0&&xc<=n&&yc<=M&&!check[x[p]][y[p]])
{
check[x[p]][y[p]]=1;
qx[++nr]=x[p];
qy[nr]=y[p];
}
if(xc>0&&yc>0&&xc<=n&&yc<=M&&key[m[xc][yc]]&&!mat[xc][yc])
{
++sol;
mat[xc][yc]=1;
key[(xc-1)*M+yc]=1;
x[++u]=xc;
y[u]=yc;
}
}
++p;
}
}
}
g<<sol;
return 0;
}