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
Post a Comment