#include <iostream>
using namespace std;
int M[10002][10002],h,w,dx[8]={1,1,0,-1,-1,-1,0,1},dy[8]={0,1,1,1,0,-1,-1,-1};
void dfs(int y,int x)
{
for(int k=0;k<8;++k)
{
if(M[y+dy[k]][x+dx[k]]==1)
{
M[y+dy[k]][x+dx[k]]=-1;
dfs(y+dy[k],x+dx[k]);
}
}
}
int main()
{
int c,x,y,count;
while(cin>>h>>w>>c)
{
for(int i=0;i<=h+1;++i)
{
for(int j=0;j<=w+1;++j)
{
M[i][j]=-1;
}
}
while(c--)
{
cin>>y>>x;
M[y][x]=1;
}
count=0;
for(int i=1;i<=h;++i)
{
for(int j=1;j<=w;++j)
{
if(M[i][j]==1)
{
count+=1;
M[i][j]=-1;
dfs(i,j);
}
}
}
cout<<count<<endl;
}
}
我對題目的理解應該沒有問題吧