Pagini recente » Cod sursa (job #1369107) | Cod sursa (job #3265089) | Cod sursa (job #2261187) | Cod sursa (job #402199) | Cod sursa (job #2135263)
#include <fstream>
#include <deque>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int a[152][152],b[152][152];
bool viz[152][152];
bool fr[30000];
int c, xinc,yinc;
int n , m , k;
int cnt=1;
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int main()
{
f >> n >> m >> k ;
for ( int i = 1 ; i <= n ; i ++ )
for ( int j = 1 ; j <= m ; j ++ )
{f >> a[i][j];
c++;
b[i][j]=c;
}
xinc = 1+ (k-1)/m;
yinc = 1+ (k-1)%m;
fr[k]=1;
deque < pair < int , int > > Q;
Q.push_front(make_pair(xinc,yinc));
fr[b[xinc][yinc]]=1;
a[xinc][yinc]=-1;
int cauta=1;
while(cauta==1)
{
cauta =0;
while(!Q.empty())
{
int i = Q.front().first;
int j = Q.front().second;
Q.pop_front();
for ( int q = 0 ; q <= 3 ; q ++ )
{
int ii = i + dx[q];
int jj = j + dy[q];
if(a[ii][jj]!=-1)
{
if(fr[a[ii][jj]]==1)
{
Q.push_front(make_pair(ii,jj));
a[ii][jj]=-1;
fr[b[ii][jj]]=1;
cnt++;
cauta=1;
}
}
}
}
}
g << cnt + 1;
return 0;
}