Untitled
unknown
plain_text
2 years ago
2.4 kB
8
Indexable
#include <iostream>
using namespace std;
int a[100][100];
int save[100][100];
int vis[100][100];
int vis1[100][100];
int dem[6];
int n;
int qx[10000000];
int qy[10000000];
int qd[10000000];
int f;
int r;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
void push(int x,int y){
r++;
qx[r]=x;
qy[r]=y;
//qd[r]=z;
}
void pop(int &x,int &y){
f++;
x=qx[f];
y=qy[f];
//dis=qd[f];
}
void check(){
int x,y;
int flag=0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(a[i][j]==0&&vis[i][j]==0){
for(int i=1; i<=5;i++){
dem[i]=0;
}
flag++;
f=r=-1;
x=i;
y=j;
push(x,y);
vis[x][y]=flag;
while(f!=r){
pop(x,y);
for(int i=0;i<4; i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>=0&&xx<n&&yy>=0&&yy<n){
if(a[x][y]==0){
if(a[xx][yy]==0&&vis[xx][yy]!=flag) {
push(xx,yy);
vis[xx][yy]=flag;
}
else if(vis[xx][yy]!=flag&&save[xx][yy]!=0){
push(xx,yy);
vis[xx][yy]=flag;
dem[a[xx][yy]]++;
}
}
else{
if(a[xx][yy]==a[x][y]&&vis[xx][yy]!=flag&&save[xx][yy]!=0){
push(xx,yy);
vis[xx][yy]=flag;
dem[a[xx][yy]]++;
}
}
}
}
}
int max=0;
for(int i=1; i<6; i++){
if(max<dem[i]) max=dem[i];
}
int doi;
for(int i=1; i<6; i++){
if(max==dem[i]) doi=i;
}
for(int i=0;i<n;i++){
for(int j=0; j<n;j++){
if(a[i][j]==0&&vis[i][j]==flag) a[i][j]=doi;
}
}
}
}
}
}
int demvung(){
int dem=0;
for(int i=0;i<n; i++){
for(int j=0; j<n;j++){
if(vis1[i][j]==0){
dem++;
f=r=-1;
int x=i;
int y=j;
vis[x][y]=1;
push(x,y);
while(f!=r){
pop(x,y);
for(int i=0; i<4; i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>=0&&xx<n&&yy>=0&&yy<n){
if(a[xx][yy]==a[x][y]&&vis1[xx][yy]==0){
push(xx,yy);
vis1[xx][yy]=1;
}
}
}
}
}
}
}
return dem;
}
int main(){
//freopen("input.txt","r",stdin);
int t;
cin>>t;
for (int tc=1; tc<=t;tc++){
cout<<"Case #"<<tc<<endl;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0; j<n;j++){
cin>>a[i][j];
save[i][j]=a[i][j];
vis[i][j]=0;
vis1[i][j]=0;
}
}
check();
int kq=demvung();
cout<<kq<<endl;
}
return 0;
}Editor is loading...