Pagini recente » Cod sursa (job #3237555) | Cod sursa (job #1124253) | Cod sursa (job #3237563) | Cod sursa (job #2750654) | Cod sursa (job #2703309)
#include <bits/stdc++.h>
#define dim 152
using namespace std;
ifstream fin ("castel.in");
ofstream fout("castel.out");
int n,m,necesar[dim][dim],coada[dim*dim][2],dx[]= {0,-1,0,1},dy[]= {-1,0,1,0}, viz[dim];
vector< pair<int,int> >v[dim*dim];
int floor (int a,int b)
{
a=a+b-1;
a/=b;
return a;
}
void lee ()
{
int p=1,u=1;
while (p<=u)
{
int x=coada[p][0],y=coada[p][1];
int i,nr=(x-1)*m+y;
for (i=0; i<v[nr].size(); i++)
if (viz[(v[nr][i].first-1)*m+v[nr][i].second]==0)
{
coada[++u][0]=v[nr][i].first;
coada[u][1]=v[nr][i].second;
viz[(v[nr][i].first-1)*m+v[nr][i].second]=1;
}
for (i=0; i<4; i++)
{
int xx=x+dx[i],yy=y+dy[i];
if (xx>0 && xx<=n && yy>0 &&yy<=m&& viz[(xx-1)*m+yy]==0)
{
if (viz[necesar[xx][yy]])
{
coada[++u][0]=xx;
coada[u][1]=yy;
viz[(xx-1)*m+yy]=1;
}
else v[necesar[xx][yy]].push_back(make_pair(xx,yy));
}
}
++p;
}
fout<<u<<'\n';
}
int32_t main()
{
int i,j,k;
fin>>n>>m>>k;
coada[1][0]=floor(k,m);
coada[1][1]=k-m*(coada[1][0]-1);
viz[k]=1;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
fin>>necesar[i][j];
lee();
return 0;
}