/*
#include<stdio.h>
int arr[101][101]={},ar[101][101],cnt=0,cnt2=0,n,m;
int dfs(int i,int j)
{
if(i<1||j<1||i>n||j>m||arr[i][j]!=1)
return ;
arr[i][j]=0;
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int dfs2(int i,int j)
{
if(i<1||j<1||i>n||j>m||ar[i][j]!=0)
return ;
ar[i][j]=1;
dfs2(i-1,j);
dfs2(i+1,j);
dfs2(i,j-1);
dfs2(i,j+1);
}
int main()
{
int i,j;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%d",&arr[i][j]);
ar[i][j]=arr[i][j];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(arr[i][j]==1)
{
cnt++;
dfs(i,j);
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(ar[i][j]==0)
{
cnt2++;
dfs2(i,j);
}
}
}
printf("%d %d",cnt2,cnt);
}
#include<stdio.h>
int arr[101][101],ar[101][101],n,cnt=0;
int dfs(int i,int j,int k)
{
if(i<1||j<1||i>n||j>n||arr[i][j]<=k)
return ;
arr[i][j]=0;
dfs(i-1,j,k);
dfs(i+1,j,k);
dfs(i,j-1,k);
dfs(i,j+1,k);
}
int main()
{
int i,j,k,max=1;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d",&arr[i][j]);
ar[i][j]=arr[i][j];
}
}
for(k=1; k<=100; k++)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
arr[i][j]=ar[i][j];
}
}
cnt=0;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(arr[i][j]>k)
{
cnt++;
dfs(i,j,k);
}
}
}
if(cnt>max)
{
max=cnt;
}
}
printf("%d",max);
}
#include<stdio.h>
int arr[8][8],cnt=0,n;
int dfs(int i,int j,int c)
{
if(i<1||j<1||i>7||j>7||arr[i][j]!=c)
return ;
arr[i][j]=0;
cnt++;
dfs(i-1,j,c);
dfs(i+1,j,c);
dfs(i,j-1,c);
dfs(i,j+1,c);
}
int main()
{
int i,j,area=0;
for(i=1; i<=7; i++)
{
for(j=1; j<=7; j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=1; i<=7; i++)
{
for(j=1; j<=7; j++)
{
if(arr[i][j]!=0)
{
cnt=0;
dfs(i,j,arr[i][j]);
if(cnt>=3)
{
area++;
}
}
}
}
printf("%d",area);
}
#include<stdio.h>
char arr[11][11];
int n,m,cnt=0;
void dfs(int i,int j)
{
if(i<1||j<1||i>10||j>10||arr[i][j]!='_')
return ;
arr[i][j]='*';
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int main()
{
int i,j,area;
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
scanf("%c ",&arr[i][j]);
}
}
scanf("%d %d",&n,&m);
dfs(m+1,n+1);
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
printf("%c",arr[i][j]);
}
printf("\n");
}
}
*/
/*
queue 구현부분
#include <stdio.h>
#define SIZE 50
int queue[SIZE];
int front=-1,rear=-1;
void enqueue(int data)
{
//rear
rear++;
queue[rear]=data;
}
int dequeue()
{
//front : 데이터가 마지막으로 나간 위치
front++;
return queue[front];
}
int main()
{
}
*/
/*
바이러스 dfs풀이
#include<stdio.h>
int arr[101][101]={},a[101]={},n;
void dfs(int node)
{
for(int i=1;i<=n;i++)
{
if(arr[node][i]==1 && a[i]==0)
{
a[i]=1;
dfs(i);
}
}
}
int main()
{
int b,c=0,x,y;
scanf("%d %d",&n,&b);
for(i=1;i<=b;i++)
{
scanf("%d %d",&x,&y);
arr[x][y]=arr[y][x]=1;
}
dfs(1);
for(i=2;i<=n;i++)
{
c+=a[i];
}
printf("%d",c);
}
*/
/*bfs로 바이러스 풀이*/
#include<stdio.h>
int n;
int queue[10001];
int front=-1,rear=-1;
void enqueue(int data)
{
rear++;
queue[rear]=data;
}
int dequeue()
{
front++;
return queue[front];
}
int main()
{
int b,c=0,x,y;
scanf("%d %d",&n,&b);
for(i=1;i<=b;i++)
{
}
}