Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;const int MAXN = 110;const double EPS = 1e-6;int N, M, x, y;int pic[MAXN][MAXN];bool visited[MAXN][MAXN];vector<pair<int, int> > locs;int dx[] = {-1, 1, 0, 0};int dy[] = {0, 0, -1, 1};bool isN(pair<int, int> &a, pair<int, int> &b) {if ((abs(a.first - b.first) == 1 && abs(a.second - b.second) == 0) ||(abs(a.first - b.first) == 0 && abs(a.second - b.second) == 1)){return true;}return false;}void dfs(int row, int col, int &cnt, int val) {visited[row][col] = true;cnt += 4;pair<int, int> pp = make_pair(row, col);for (int i = 0; i < locs.size(); i++) {if (isN(locs[i], pp)) {cnt -= 2;}}locs.push_back(pp);for(int i = 0; i < 4; i++) {int new_x = row + dx[i];