UVA 572 Oil Deposits Solution

UVA 572 Oil Deposits Solution


#include<iostream>
#include<map>
#include<algorithm>
#include<queue>


using namespace std;
typedef pair<int,int> pii;
char arr[100][100];
bool visit[100][100];
int m,n;
int dx[]={-1,-1,-1,0,0,1,1,1},dy[]={-1,0,1,-1,1,-1,0,1};
void bfs(int x,int y)
{
    queue<pii> q;
    int i,xx,yy;
    pii p=pair<int,int>(x,y);
    q.push(p);
    while(!q.empty())
    {
        p=q.front();
        q.pop();
        x=p.first;
        y=p.second;
        for(i=0;i<8;i++)
        {
            xx=x+dx[i];
            yy=y+dy[i];
            if(xx>=0 && xx<m && yy>=0 && yy<n)
            {
                if(!visit[xx][yy])
                {
                    visit[xx][yy]=true;
                    if(arr[xx][yy]=='@')
                        q.push(pair<int,int>(xx,yy));
                }
            }
        }
    }
}

int main()
{
    freopen("input.txt","r",stdin);
    int i,j,count;
    while(cin>>m>>n)
    {
        if(m==0 && n==0)
            break;
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                cin>>arr[i][j];
                visit[i][j]=false;
            }
        }
        count=0;
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(!visit[i][j])
                {
                    visit[i][j]=true;
                    if(arr[i][j]=='@')
                    {
                        count++;
                        bfs(i,j);
                    }
                }
            }
        }
        cout<<count<<endl;
    }
    return 0;
}

Comments

Popular posts from this blog

uva 679 - Dropping Balls Solution

uva 481 - What Goes Up Solution

uva-10077 Solution --- The Stern-Brocot Number System