Pagini recente » Cod sursa (job #286920) | Cod sursa (job #1467607) | Cod sursa (job #5199) | Cod sursa (job #121275) | Cod sursa (job #80197)
Cod sursa(job #80197)
#include<stdio.h>
int n, k, m, q[23000], chei[23000], i, a[23000], p, x, xx, car[23000], sol, mm, lng[23000];
int (*gs)[23000] = new int[23000][23000];
int dx(int i){
switch(i){
case 0: return 1;
case 1: return -1;
case 2: return n;
case 3: return -n;
}
return 0;
}
int main()
{
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
scanf("%d%d%d", &mm, &n, &k);
for (i=1; i<=mm*n; i++)
scanf("%d", &a[i]);
q[1] = k;
car[k] = 1;
sol = 1;
p = 0;
m = 1;
while (p < m){
p ++;
x = q[p];
for (i=0; i<4; i++){
xx =x+dx(i);
if (xx > 0 && xx <= n*mm){
if (!car[xx]){
if (chei[a[xx]]){
sol ++;
q[++m] = xx;
}
else
gs[a[xx]][++lng[a[xx]]] = xx;
car[xx] = 1;
}
}
}
if (!chei[x]){
chei[x] = 1;
sol += lng[x];
for (i=1; i<=lng[x]; i++)
q[++m] = gs[x][i];
}
}
printf("%d\n", sol);
fclose(stdin);
fclose(stdout);
return 0;
}