Pagini recente » Cod sursa (job #1217226) | Cod sursa (job #1964824) | Cod sursa (job #1583955) | Cod sursa (job #2901907) | Cod sursa (job #2178029)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
struct pos
{
int l, c;
};
queue<pos>coada;
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;
coada.push(p);
cheie[poz[x][y]]=1;
while(!coada.empty())
{
p=coada.front();
coada.pop();
for(int d=0; d<4; ++d)
{
lv=p.l+dx[d];
cv=p.c+dy[d];
if(inside(lv, cv))
{
if(cheie[a[lv][cv]])
{
if(!viz[lv][cv])
{
++sol;
viz[lv][cv]=1;
q.l=lv; q.c=cv;
cheie[poz[lv][cv]]=1;
coada.push(q);
}
}
}
}
for(int d=0; d<4; ++d)
{
lv=p.l+dx[d];
cv=p.c+dy[d];
if(inside(lv, cv))
{
if(cheie[a[lv][cv]])
{
if(!viz[lv][cv])
{
++sol;
viz[lv][cv]=1;
q.l=lv; q.c=cv;
cheie[poz[lv][cv]]=1;
coada.push(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;
lee(ii, jj);
fout<<sol<<"\n";
return 0;
}