Pagini recente » Cod sursa (job #3256365) | Cod sursa (job #500520) | Cod sursa (job #1506117) | Cod sursa (job #174209) | Cod sursa (job #2179334)
#include <bits/stdc++.h>
#define pb push
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
int n,m,i,j,k,p,v[150*150+9],l[159][150*150],x,u[150*150+9],nr;
queue <int> q;
int main()
{
fin>>m>>n>>k;
int vs[]= {-n,1,n,-1};
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
fin>>v[++p];
for(i=1; i<=n*m; i++)
for(j=0; j<4; j++)
if(i+vs[j]>0&&i+vs[j]<=n*m&&v[i+vs[j]]==i)
l[i][++l[i][0]]=i+vs[j];
q.pb(k);
u[1]=1;
while(!q.empty())
{
x=q.front();
q.pop();
for(i=1; i<=l[x][0]; i++)
{
u[l[x][i]]=1;
q.pb(l[x][i]);
}
for(i=0; i<4; i++)
if(x+vs[i]>0&&u[x+vs[i]]==0&&u[v[x+vs[i]]]==1)
{
u[x+vs[i]]=1;
q.pb(x+vs[i]);
l[v[x+vs[i]]][++l[v[x+vs[i]]][0]]=x+vs[i];
}
}
for(i=1;i<=n*m;i++)
if(u[i]==1)
nr++;
fout<<nr;
return 0;
}