#include <stdio.h>
int grid[101][101];
int visited[101][101];
int front,rear;
int num,numEdge,i;
int pos[4][2] = {{0,-1},{-1,0},{0,1},{1,0}};
struct p{
int u;
int v;
} Q[10000];
//struct p Q[10000];
void initQueue(){
front = rear = -1;
}
int isEmpty(){
return front == rear;
}
void enQueue(int x, int y){
rear++;
Q[rear].u = x;
Q[rear].v = y;
}
struct p deQueue(){
struct p temp = {-1,-1};
if(!isEmpty()){
front++;
return Q[front];
}
return temp;
}
int bfs(int x,int y){
enQueue(x,y);
int max = 1;
visited[x][y] = 1;
while(!isEmpty()){
struct p point = deQueue();
int tx,ty,t;
for(t=0;t<4;t++){
tx = point.u + pos[t][0];
ty= point.v + pos[t][1];
if(tx>= 0 && tx <= num && ty >=0 && ty <=num && !visited[tx][ty] && grid[tx][ty]){
printf("Check %d %d\n",tx
,ty
); enQueue(tx,ty);
max++;
visited[tx][ty] = 1;
}
}
}
return max;
}
int main(){
int cnt = 0;
int maxx = 0;
int j;
initQueue();
for(i=1;i<=num;i++){
for(j=1;j<=num;j++){
grid[i][j] = 0;
visited[i][j] = 0;
}
}
for(i=1;i<=num;i++){
for(j=1;j<=num;j++){
}
}
// for(i = 0;i<numEdge;i++){
// int x,y; scanf("%d %d",&x,&y);
// grid[x][y] = grid[y][x] = 1;
// }
for(int a =1;a<=num;a++){
for(j=1;j<=num;j++){
if(!visited[a][j] && grid[a][j] == 1){
cnt++;
int t = bfs(a,j);
if(t > maxx ){
maxx = t;
}
}
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBncmlkWzEwMV1bMTAxXTsKaW50IHZpc2l0ZWRbMTAxXVsxMDFdOwppbnQgZnJvbnQscmVhcjsKaW50IG51bSxudW1FZGdlLGk7CmludCBwb3NbNF1bMl0gPSB7ezAsLTF9LHstMSwwfSx7MCwxfSx7MSwwfX07CnN0cnVjdCBwewogICAgaW50IHU7CiAgICBpbnQgdjsKfSBRWzEwMDAwXTsKLy9zdHJ1Y3QgcCBRWzEwMDAwXTsKdm9pZCBpbml0UXVldWUoKXsKICAgIGZyb250ID0gcmVhciA9IC0xOwp9CmludCBpc0VtcHR5KCl7CiAgICByZXR1cm4gZnJvbnQgPT0gcmVhcjsKfQoKdm9pZCBlblF1ZXVlKGludCB4LCBpbnQgeSl7CiAgICByZWFyKys7CiAgICBRW3JlYXJdLnUgPSB4OwogICAgUVtyZWFyXS52ID0geTsKfQoKc3RydWN0IHAgZGVRdWV1ZSgpewogICAgc3RydWN0IHAgdGVtcCA9IHstMSwtMX07CiAgICBpZighaXNFbXB0eSgpKXsKICAgICAgICBmcm9udCsrOwogICAgICAgIHJldHVybiBRW2Zyb250XTsKICAgIH0KICAgIHJldHVybiB0ZW1wOwp9CgppbnQgYmZzKGludCB4LGludCB5KXsKICAgIGVuUXVldWUoeCx5KTsKICAgIGludCBtYXggPSAxOwogICAgdmlzaXRlZFt4XVt5XSA9IDE7CiAgICB3aGlsZSghaXNFbXB0eSgpKXsKICAgICAgICBzdHJ1Y3QgcCBwb2ludCA9IGRlUXVldWUoKTsKICAgICAgICBpbnQgdHgsdHksdDsKICAgICAgICBmb3IodD0wO3Q8NDt0KyspewogICAgICAgICAgICB0eCA9IHBvaW50LnUgKyBwb3NbdF1bMF07CiAgICAgICAgICAgIHR5PSBwb2ludC52ICsgcG9zW3RdWzFdOwogICAgICAgICAgICBpZih0eD49IDAgJiYgdHggPD0gbnVtICYmIHR5ID49MCAmJiB0eSA8PW51bSAmJiAhdmlzaXRlZFt0eF1bdHldICYmIGdyaWRbdHhdW3R5XSl7CiAgICAgICAgICAgICAgICBwcmludGYoIkNoZWNrICVkICVkXG4iLHR4LHR5KTsKICAgICAgICAgICAgICAgIGVuUXVldWUodHgsdHkpOwogICAgICAgICAgICAgICAgbWF4Kys7CiAgICAgICAgICAgICAgICB2aXNpdGVkW3R4XVt0eV0gPSAxOwoKICAgICAgICAgICAgfSAKICAgICAgICB9CiAgICAKICAgICAgICAKICAgIH0KICAgIHJldHVybiBtYXg7Cn0KCmludCBtYWluKCl7CiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBpbnQgY250ID0gMDsKICAgIGludCBtYXh4ID0gMDsKICAgIGludCBqOwogICAgaW5pdFF1ZXVlKCk7CiAgICBzY2FuZigiJWQiLCZudW0pOwogICAgZm9yKGk9MTtpPD1udW07aSsrKXsKICAgICAgICBmb3Ioaj0xO2o8PW51bTtqKyspewogICAgICAgICAgICBncmlkW2ldW2pdID0gMDsKICAgICAgICAgICAgdmlzaXRlZFtpXVtqXSA9IDA7CiAgICAgICAgfQogICAgfQogICAgZm9yKGk9MTtpPD1udW07aSsrKXsKICAgICAgICBmb3Ioaj0xO2o8PW51bTtqKyspewogICAgICAgICAgIHNjYW5mKCIlZCIsJmdyaWRbaV1bal0pOwogICAgICAgIH0KICAgIH0KICAgIC8vIGZvcihpID0gMDtpPG51bUVkZ2U7aSsrKXsKICAgIC8vICAgICBpbnQgeCx5OyBzY2FuZigiJWQgJWQiLCZ4LCZ5KTsKICAgIC8vICAgICBncmlkW3hdW3ldID0gZ3JpZFt5XVt4XSA9IDE7CiAgICAvLyB9CiAgICBmb3IoaW50IGEgPTE7YTw9bnVtO2ErKyl7CiAgICAgICAgZm9yKGo9MTtqPD1udW07aisrKXsKICAgICAgICAgICAgaWYoIXZpc2l0ZWRbYV1bal0gJiYgZ3JpZFthXVtqXSA9PSAxKXsKICAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgICAgICAgICAgaW50IHQgPSBiZnMoYSxqKTsKICAgICAgICAgICAgICAgIGlmKHQgPiBtYXh4ICl7CiAgICAgICAgICAgICAgICAgICAgbWF4eCA9IHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIiVkICVkIixjbnQsbWF4eCk7Cn0=