Pagini recente » Cod sursa (job #541469) | Cod sursa (job #432955) | Cod sursa (job #2045862) | Cod sursa (job #426009) | Cod sursa (job #667573)
Cod sursa(job #667573)
#include <fstream>
#include <vector>
using namespace std;
int v[151][151],w[151][151],x,y,q,vz[23000],fst[152][152],k,lg,l;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
vector <int> tailx,cpx;
vector <int> taily,cpy;
int main() {
int m,n,i,j;
ifstream f("castel.in");
ofstream g("castel.out");
f>>n>>m>>k;
for (i=0; i<=n+1; i++)
fst[i][0]=fst[i][m+1]=1;
for (i=0; i<=m+1; i++)
fst[0][i]=fst[n+1][i]=1;
x=k/m+1;
y=k%m;
if (!(k%m))
y=m;
q=0;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++) {
q++;
f>>v[i][j];
w[i][j]=q;
}
vz[w[x][y]]=1;
q=1;
fst[x][y]=1;
for (i=0; i<4; i++)
if (!fst[x+dx[i]][y+dy[i]]) {
tailx.push_back(x+dx[i]);
taily.push_back(y+dy[i]);
fst[x+dx[i]][y+dy[i]]=1;
lg++;
}
k=1;
while (k) {
k=0;
for (j=0; j<lg; j++)
if (vz[v[tailx[j]][taily[j]]]) {
k=1;
q++;
// fst[tailx[j]][taily[j]]=1;
x=tailx[j];
y=taily[j];
vz[w[x][y]]=1;
tailx.erase(tailx.begin()+j);
taily.erase(taily.begin()+j);
j--;
lg--;
for (i=0; i<4; i++)
if (!fst[x+dx[i]][y+dy[i]]) {
tailx.push_back(x+dx[i]);
taily.push_back(y+dy[i]);
fst[x+dx[i]][y+dy[i]]=1;
lg++;
}
}
}
g<<q<<'\n';
g.close();
return 0;
}