intさわだんのBlack History

刹那的レジェンドになりたい。

POJ 3620 Avoid The Lakes (C++)

問題文
http://poj.org/problem?id=3620


解法:深さ優先探索やるだけ。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int n,m,k,tmp,ans=0,d[110][110];
int da[] = {0,1,0,-1};
int db[] = {1,0,-1,0};
void dfs(int a,int b){
	tmp++;
	d[a][b] = 0;
	for(int i = 0;i < 4;i++){
		int na = a + da[i];
		int nb = b + db[i];
		if(na >= 1 && na <= n && nb >= 1 && nb <= m && d[na][nb] == 1)dfs(na,nb);
	}
}
int main(){
	cin >> n >> m >> k;
	while(k--){
		int a,b;
		cin >> a >> b;
		d[a][b] = 1;
	}
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			if(d[i][j] == 1){
				tmp = 0;
				dfs(i,j);
				ans = max(ans,tmp);
			}
		}
	}
	cout << ans << endl;
	return 0;
}