Pagini recente » Cod sursa (job #1358510) | Cod sursa (job #1521226) | Cod sursa (job #288137) | Cod sursa (job #577803) | Cod sursa (job #2780619)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
int m,n,k;
int a[155][155],vis[155*155],inSet[155*155];
pair <int,int> pos[155*155];
vector <int> h[155*155];
set <int> st;
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
void del(set <int> :: iterator it)
{
set <int> :: iterator it1=it;
it1++;
st.erase(it,it1);
}
void update(int v)
{
del(st.find(v));
inSet[v]=0;
for(auto x:h[v])
{
if(!inSet[x] && ok(x))
{
inSet[x]=1;
st.insert(x);
}
}
}
int main()
{
fin>>n>>m>>k;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
fin>>a[i][j];
h[a[i][j]].push_back((i-1)*m+j);
}
}
int cnt=0;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
pos[++cnt]=make_pair(i,j);
vis[k]=1;
update(k);
bool can=1;
while(can)
{
can=0;
set <int> :: iterator it=st.begin();
for(; it!=st.end(); it++)
{
int v=*it,i=pos[v].first,j=pos[v].second;
vis[v]=1;
update(v);
can=1;
}
}
int ans=0;
for(int i=1; i<=n*m; i++)
ans+=vis[i];
fout<<ans<<"\n";
return 0;
}