Pagini recente » Cod sursa (job #3244692) | Cod sursa (job #898699) | Cod sursa (job #3135872) | Cod sursa (job #2597268) | Cod sursa (job #3238749)
#include <fstream>
#include <queue>
#include <set>
#include <unordered_map>
using namespace std;
ifstream cin("castel.in");
ofstream cout("castel.out");
int cnt=0,n,m1;
int v[160][160],cheie[160][160];
int poz,px,py;
int cnt1=0;
int d1[]={0,0,-1,1};
int d2[]={1,-1,0,0};
unordered_map <int,int> m;
void lee()
{
queue <pair<int,int>> q;
q.push({px,py});
int viz[160][160]={0};
m[cheie[px][py]]=1;
viz[px][py]=1;
cnt1++;
while(!q.empty())
{
int a=q.front().first,b=q.front().second;
q.pop();
cnt1++;
for(int i=0;i<=3;i++)
{
if( viz[a+d1[i]][b+d2[i]]==0 && v[a+d1[i]][b+d2[i]]!=-1 && m[v[a+d1[i]][b+d2[i]]]==1)
{
m[cheie[a+d1[i]][b+d2[i]]]=1;
q.push({a+d1[i],b+d2[i]});
viz[a+d1[i]][b+d2[i]]=1;
}
}
}
}
int main()
{
cin>>n>>m1>>poz;
int a=poz/m1;
poz-=a*m1;
py=poz;
px=a;
if(py==0)
{
py=m1;
}
if(px==0)
{
px=1;
}
int cnt=0;
for(int i=1;i<=n;i++)
{
for(int k=1;k<=m1;k++)
{
cin>>v[i][k];
}
}
for(int i=0;i<=n+1;i++)
{
v[i][0]=-1;
v[i][m1+1]=-1;
}
for(int i=0;i<=m1+1;i++)
{
v[0][i]=-1;
v[n+1][i]=-1;
}
for(int i=1;i<=n;i++)
{
for(int k=1;k<=m1;k++)
{
cnt++;
cheie[i][k]=cnt;
}
}
lee();
lee();
cnt1=0;
lee();
cout<<cnt1-1<<'\n';
return 0;
}