Problem Type : Graph(DFS)
#include<stdio.h>
#include<string.h>
#define MAX 26
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
char mat[MAX][MAX];
int color[MAX][MAX],m,n,p;
int dfs(int i,int j)
{
int vx,vy,k;
if(color[i][j]==0)
{
p++;
color[i][j]=1;
}
for(k=0; k<8; k++)
{
vx=i+X[k];
vy=j+Y[k];
if(vx>=0 && vx<m && vy>=0 && vy<=n && mat[vx][vy]=='1')
{
if(color[vx][vy]==0)
{
dfs(vx,vy);
}
}
}
return p;
}
int main()
{
int i,j,len,test,c=0,k,arr[MAX];
scanf("%d",&test);
getchar();
getchar();
while(test--)
{
memset(mat,'\0',sizeof(mat));
memset(color,0,sizeof(color));
if(c!=0)
{
printf("\n");
}
c++;
m=-1;
while(gets(mat[++m]))
{
int l=strlen(mat[m]);
if(l==0)
break;
}
k=0;
int x=0;
for(i=0; i<m; i++)
{
n=strlen(mat[i]);
for(j=0; j<n; j++)
{
p=0;
if(mat[i][j]=='1' && color[i][j]==0)
{
int q =dfs(i,j);
if(x<q)
{
x=q;
}
}
}
}
printf("%d\n",x);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#define MAX 26
int X[8]= {-1,-1,-1,0,0,1,1,1};
int Y[8]= {-1,0,1,-1,1,-1,0,1};
char mat[MAX][MAX];
int color[MAX][MAX],m,n,p;
int dfs(int i,int j)
{
int vx,vy,k;
if(color[i][j]==0)
{
p++;
color[i][j]=1;
}
for(k=0; k<8; k++)
{
vx=i+X[k];
vy=j+Y[k];
if(vx>=0 && vx<m && vy>=0 && vy<=n && mat[vx][vy]=='1')
{
if(color[vx][vy]==0)
{
dfs(vx,vy);
}
}
}
return p;
}
int main()
{
int i,j,len,test,c=0,k,arr[MAX];
scanf("%d",&test);
getchar();
getchar();
while(test--)
{
memset(mat,'\0',sizeof(mat));
memset(color,0,sizeof(color));
if(c!=0)
{
printf("\n");
}
c++;
m=-1;
while(gets(mat[++m]))
{
int l=strlen(mat[m]);
if(l==0)
break;
}
k=0;
int x=0;
for(i=0; i<m; i++)
{
n=strlen(mat[i]);
for(j=0; j<n; j++)
{
p=0;
if(mat[i][j]=='1' && color[i][j]==0)
{
int q =dfs(i,j);
if(x<q)
{
x=q;
}
}
}
}
printf("%d\n",x);
}
return 0;
}
No comments:
Post a Comment