Tuesday, February 07, 2012

FloodFill With BFS in 8 direction

/***
    FloodFill With BFS
    Author : Md.Saiful Islam
***/
#include<stdio.h>
#define sz 26


struct st
{
int x, y;
}Q[sz*sz] ;


int mat[sz][sz], line[sz] ;
int front, rear ;


void BFS( st s )
{
st u ;
int i, rr[8]={0, 0, -1,-1,-1, 1, 1, 1}, cc[8] = {1,-1, 0, -1, 1, -1, 0, 1};
mat[s.x][s.y] = 0 ;
Q[rear++] = s ;


while( front != rear )
{
u = Q[front++] ;
for(i=0;i<8;i++)
{
if( mat[u.x+rr[i]][u.y+cc[i]] == 1)
{
mat[u.x+rr[i]][u.y+cc[i]] = 0;
Q[rear].x = u.x+rr[i] ;
Q[rear].y = u.y+cc[i] ;
rear++;
}
}
}
}


int main()
{
int r, c, i, j, res,aa,kase=1;
st u ;


while( scanf(" %d",&r) == 1)
{
for(i=1;i<=r;i++)
{
for(j=1;j<=r;j++)
{
scanf(" %1d",&aa);
mat[i][j] = aa ;
}
}
res = 0 ;


for(i=1;i<=r;i++)
{
for(j=1;j<=r;j++)
{
if( mat[i][j] == 1)
{
res++;
front = rear = 0 ;
u.x = i ; u.y = j ;
BFS(u);
}
}
}
printf("Image number %d contains %d war eagles.\n",kase++,res);
}
return 0;
}
/*
Input:
6
100100
001010
000000
110000
111000
010100
8
01100101
01000001
00011000
00000010
11000011
10100010
10000001
01100000
Output:
Image number 1 contains 3 war eagles.
Image number 2 contains 6 war eagles.
*/

1 comment:

  1. M88 Casino: Get Free €20 Bonus + 25 Spins
    M88 Casino No Deposit Bonus 2021 ➤ Enjoy top games, casino promotions & casino giveaways without クイーンカジノ needing a deposit? ➤ Grab €20 Bonus & 25 m88 ทางเข้า Spins NOW! 메리트카지노

    ReplyDelete