Pagini recente » Cod sursa (job #243188) | Cod sursa (job #136404) | Cod sursa (job #514482) | Cod sursa (job #3000941) | Cod sursa (job #2135350)
#include <fstream>
#include <deque>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
const int NMax = 155;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, 1, 0, -1};
int v[NMax][NMax];
bool fr[NMax * NMax];
int cnt = 1,n,m,k;
deque < int > qx,qy;
int main()
{
f >> n >> m >> k;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
f >> v[i][j];
}
}
for(int i = 0; i <= n + 1; i++){
v[i][0] = v[i][m + 1] = -1;
}
for(int i = 0; i <= m + 1; i++){
v[0][i] = v[n + 1][i] = -1;
}
int r = k % m;
int c = k / m;
if(r == 0)
r = m;
else
c++;
qx.push_back(c);
qy.push_back(r);
v[c][r] = -1;
fr[k] = true;
k = 0;
bool cauta = true;
while(cauta == true)
{
cauta = false;
for(int i = 0; i <= k; i++)
{
for(int j = 0; j < 4; j++)
{
int x = qx[i] + dx[j];
int y = qy[i] + dy[j];
if(v[x][y] != -1)
{
if(fr[v[x][y]] == true)
{
k++;
qx.push_back(x);
qy.push_back(y);
cnt++;
v[x][y] = -1;
fr[(x - 1) * m + y] = true;
cauta = true;
}
}
}
}
}
g << cnt;
return 0;
}