Pagini recente » Cod sursa (job #874513) | Cod sursa (job #2292954) | Cod sursa (job #2643030) | Cod sursa (job #2159485) | Cod sursa (job #2178961)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
struct pos
{
int l, c;
};
pos v[22505];
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
int a[151][151], poz[151][151];
int n, m, k, sol, ii, jj;
bool cheie[22505];
bool viz[151][151];
inline bool inside(int l, int c)
{
if(l<=0 || l>n || c<=0 || c>m) return 0;
return 1;
}
void lee(int x, int y)
{
pos p, q;
int lv, cv;
p.l=x; p.c=y;
int k=0;
v[++k]=p;
cheie[poz[x][y]]=1;
viz[x][y]=1;
bool ok=1;
while(ok)
{
ok=0;
for(int i=1; i<=k; ++i)
{
for(int d=0; d<4; ++d)
{
lv=v[i].l+dx[d];
cv=v[i].c+dy[d];
if(inside(lv, cv))
{
if(cheie[a[lv][cv]])
{
if(!viz[lv][cv])
{
ok=1;
++sol;
viz[lv][cv]=1;
cheie[poz[lv][cv]]=1;
q.l=lv; q.c=cv;
v[++k]=q;
}
}
}
}
}
}
}
int main()
{
fin>>n>>m>>k;
int cam=0;
for(int i=1; i<=n; ++i)
{
for(int j=1; j<=m; ++j)
{
fin>>a[i][j];
poz[i][j]=++cam;
if(poz[i][j]==k) ii=i, jj=j;
}
}
sol=1;
pos p;
p.l=1; p.c=1;
lee(ii, jj);
fout<<sol<<"\n";
return 0;
}