Pagini recente » Cod sursa (job #1645947) | Istoria paginii runda/macacu_22 | Istoria paginii runda/ichb_10_casi | Istoria paginii runda/tgesgt | Cod sursa (job #545087)
Cod sursa(job #545087)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> u[22500];
int x,y,v[22500],n,m,i,j,k,q[22501],c[22500],a,b;
void add()
{
if (!v[y])
{
if (v[c[y]]==1)
{
++q[0];
q[q[0]]=y;
v[y]=1;
}
else
{
u[c[y]].push_back(y);
v[y]=2;
}
}
}
int main()
{
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);--k;
for (i=0;i<n;++i)
for (j=0;j<m;++j)
{
scanf("%d",&c[i*m+j]);
--c[i*m+j];
}
q[1]=k;q[0]=1;v[0]=1;
for (i=1;(i<=q[0])&&(q[0]<=n*m);++i)
{
x=q[i];
a=x/m;
b=x%m;
for (j=0;j<u[x].size();++j)
{
++q[0];
q[q[0]]=u[x][j];
v[u[x][j]]=1;
}
if (a>0)
{
y=x-m;
add();
}
if (a<n-1)
{
y=x+m;
add();
}
if (b>0)
{
y=x-1;
add();
}
if (b<m-1)
{
y=x+1;
add();
}
}
printf("%d",q[0]);
return 0;
}