Untitled
unknown
plain_text
2 years ago
2.5 kB
3
Indexable
#include <iostream>
#define N 101
#define oo 2000000
using namespace std;
int ans;
int n;
int sx[N*N],sy[N*N];
int sxx[N*N],syy[N*N];
int dd[N][N];
int d[N][N];
int a[N][N];
int b[N][N];
int hx[]={0,-1,0,1};
int hy[]={-1,0,1,0};
void doc()
{
ans=0;
int u,v;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
dd[i][j]=0;
b[i][j]=a[i][j];
}
}
int cnt[6];
int mau( int dau, int cuoi)
{
for(int i=1;i<=5;i++)cnt[i]=cuoi-dau+1;
while(dau<=cuoi)
{
int u=sxx[dau];
int v=syy[dau];
dau++;
for(int i=0;i<4;i++)
{
int x=u+hx[i];
int y=v+hy[i];
if(x>0&&x<=n&&y>0&&y<=n&&d[x][y]==0)
{
if(a[u][v]==0)
{
cnt[a[x][y]]++;
d[x][y]=1;
sxx[++cuoi]=x;
syy[cuoi]=y;
}else if(a[u][v]==a[x][y])
{
cnt[a[x][y]]++;
d[x][y]=1;
sxx[++cuoi]=x;
syy[cuoi]=y;
}
}
}
}
int kq=0;
for(int i=1;i<=5;i++)
{
if(cnt[i]>=cnt[kq])kq=i;
}
return kq;
}
void xuli(int tx, int ty)
{
int dau=1,cuoi=0;
sxx[++cuoi]=tx;
syy[cuoi]=ty;
dd[tx][ty]=1;
while(dau<=cuoi)
{
int u=sxx[dau];
int v=syy[dau];
dau++;
for(int i=0;i<4;i++)
{
int x=u+hx[i];
int y=v+hy[i];
if(x>0&&x<=n&&y>0&&y<=n&&b[x][y]==b[tx][ty]&&dd[x][y]==0)
{
dd[x][y]=1;
sxx[++cuoi]=x;
syy[cuoi]=y;
}
}
}
}
void bfs(int tx,int ty)
{
int dau=1,cuoi=0;
sx[++cuoi]=tx;
sy[cuoi]=ty;
dd[tx][ty]=1;
while(dau<=cuoi)
{
int u=sx[dau];
int v=sy[dau];
//cout<<u<<" "<<v<<"\n";
dau++;
for(int i=0;i<4;i++)
{
int x=u+hx[i];
int y=v+hy[i];
if(x>0&&x<=n&&y>0&&y<=n&&a[x][y]==0&&dd[x][y]==0)
{
dd[x][y]=1;
sx[++cuoi]=x;
sy[cuoi]=y;
}
}
}
//<<"\n";
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)d[i][j]=0;
for(int i=1;i<=cuoi;i++)
{
d[sx[i]][sy[i]]=1;
sxx[i]=sx[i];
syy[i]=sy[i];
}
int color=mau(1,cuoi);
for(int i=1;i<=cuoi;i++)b[sx[i]][sy[i]]=color,a[sx[i]][sy[i]]=0;
}
int main()
{
//freopen("input.txt","r",stdin);
int TC;
cin>>TC;
for(int tc=1;tc<=TC;tc++)
{
doc();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)if(b[i][j]==0)bfs(i,j);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)dd[i][j]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)if(dd[i][j]==0)
{
xuli(i,j);
ans++;
}
cout<<"Case #"<<tc<<"\n";
cout<<ans<<"\n";
}
return 0;
}Editor is loading...