Pagini recente » Cod sursa (job #1913933) | Cod sursa (job #2805153) | Cod sursa (job #2799260) | Cod sursa (job #1822671) | Cod sursa (job #1146842)
#include <fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
const short xx[5]={0,1,-1,0,0};
const short yy[5]={0,0,0,1,-1};
struct adat
{
short x,y;
bool l;
};
bool y[25505],b[155][155];
adat v[25505],szel[25505];
int n,m,i,j,a[155][155],eleje,vege,aktx,akty,ujx,ujy,szvege,k,c[155][155],t,q,w;
int ell()
{
return ujx>=1 && ujy>=1 && ujx<=n && ujy<=m;
}
int szelessegi (int kezdi,int kezdj)
{
eleje=1;
vege=1;
v[1].x=kezdi;
v[1].y=kezdj;
b[kezdi][kezdj]=1;
while (eleje<=vege)
{
aktx=v[eleje].x;
akty=v[eleje].y;
y[c[aktx][akty]]=1;
for (int i=1;i<=szvege;i++)
if (!szel[i].l && c[aktx][akty]==a[szel[i].x][szel[i].y])
{
vege++;
v[vege].x=szel[i].x;
v[vege].y=szel[i].y;
szel[i].l=1;
b[v[vege].x][v[vege].y]=1;
}
for (k=1;k<=4;k++)
{
ujx=aktx+xx[k];
ujy=akty+yy[k];
if (ell())
{if (y[a[ujx][ujy]] && !b[ujx][ujy])
{
vege++;
v[vege].x=ujx;
v[vege].y=ujy;
b[ujx][ujy]=1;
}
else
if (!y[a[ujx][ujy]])
{
szvege++;
szel[szvege].x=ujx;
szel[szvege].y=ujy;
}}
}
eleje++;
}
}
int main()
{
f>>n>>m>>k;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
f>>a[i][j];
t++;
if (t==k)
{
q=i;
w=j;
}
c[i][j]=t;
}
szelessegi(q,w);
g<<vege-1;
}