Pagini recente » Cod sursa (job #1273548) | | Cod sursa (job #1591471) | Cod sursa (job #1820746) | Cod sursa (job #2684269)
#include <fstream>
#include <queue>
#include <map>
using namespace std;
ifstream in("castel.in");
ofstream out("castel.out");
int dx[]= {-1,0,1,0};
int dy[]= {0,1,0,-1};
bool ver[151][151];
int ma[151][151];
pair<int,int> q[22501];
/*void lee(int x,int y)
{
ver[x][y]=1;
while(!q.empty())
{
int lin=q.front().x;
int col=q.front().y;
for(d=0; d<4; d++)
{
if(lin + dx[d]<=n && lin + dx[d]>=1 && col + dy[d]<=m && col + dy>=1 && ver[lin+dx[d]][col+dy[d]]!=0)
{
q.push({lin+dx[d], col+dy[d});
}
else if(lin + dx[d]<=n && lin + dx[d]>=1 && col + dy[d]<=m && col + dy>=1 && ver[lin+dx[d]][col+dy[d]]==0)
{
lee(lin+dx[d], col+dy[d
});
}
}
q.pop();
}*/
int m,n;
inline pair <int,int>bam(int x)
{
if(x%m==0)
{
return {x/m,m};
}
else
{
return {x/m+1,x%m};
}
}
bool cheie[22501];
int main()
{
int k,i,j;
in>>n>>m>>k;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
in>>ma[i][j];
}
}
cheie[k]=1;
int cnt=0;
q[++cnt] = bam(k);
ver[q[1].first][q[1].second]=1;
bool ok;
ok=1;
for(int st=1; st<=cnt; st++)
{
i=q[st].first;
j=q[st].second;
for(int k=0; k<4; k++)
{
int ii=i+dx[k];
int jj=j+dy[k];
if(cheie[ma[ii][jj]]!=0 && ver[ii][jj]==0)
{
ok=0;
cheie[ii*m-m+jj]=1;
q[++cnt]= {ii,jj};
ver[ii][jj]=1;
}
}
}
ok=1;
while(!ok);
{
ok=1;
for(int st=1; st<=cnt; st++)
{
i=q[st].first;
j=q[st].second;
for(int k=0; k<4; k++)
{
int ii=i+dx[k];
int jj=j+dy[k];
if(cheie[ma[ii][jj]]!=0 && ver[ii][jj]==0)
{
ok=0;
cheie[ii*m-m+jj]=1;
q[++cnt]= {ii,jj};
ver[ii][jj]=1;
}
}
}
}
out<<cnt;
return 0;
}