Pagini recente » Cod sursa (job #118003) | Cod sursa (job #2160548) | Cod sursa (job #2288848) | Cod sursa (job #2336567) | Cod sursa (job #2224497)
#include <fstream>
#include <queue>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
pair<int,int>x;
queue<pair<int,int> >dq;
int n,m,k,i,j,l[30000],c[30000],v[151][151],r,v2[151][151],v3[151][151],nr,chei[30000];
int main()
{
f>>n>>m>>k;
nr=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
v[i][j]=nr;
if(v[i][j]==k)
{
x=make_pair(i,j);
chei[k]=1;
dq.push(x);
}
nr++;
f>>v2[i][j];
}
}
r=1;
while(!dq.empty() && r==1)
{
nr=0;
r=0;
while(!dq.empty())
{
l[++nr]=dq.front().first;
c[nr]=dq.front().second;
v3[l[nr]][c[nr]]=1;
chei[v[l[nr]][c[nr]]]=1;
dq.pop();
}
for(i=1;i<=nr;i++)
{
if(l[i]>1 && chei[v2[l[i]-1][c[i]]]==1 && v3[l[i]-1][c[i]]==0)
{
x=make_pair(l[i]-1,c[i]);
dq.push(x);
r=1;
}
if(l[i]<n && chei[v2[l[i]+1][c[i]]]==1 && v3[l[i]+1][c[i]]==0)
{
x=make_pair(l[i]+1,c[i]);
dq.push(x);
r=1;
}
if(c[i]>1 && chei[v2[l[i]][c[i]-1]]==1 && v3[l[i]][c[i]-1]==0)
{
x=make_pair(l[i],c[i]-1);
dq.push(x);
r=1;
}
if(c[i]<m && chei[v2[l[i]][c[i]+1]]==1 && v3[l[i]][c[i]+1]==0)
{
x=make_pair(l[i],c[i]+1);
dq.push(x);
r=1;
}
x=make_pair(l[i],c[i]);
dq.push(x);
}
}
nr=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(v3[i][j]==1)
{
nr++;
}
}
}
g<<nr<<'\n';
return 0;
}