[ad_1]
#embrace <bits/stdc++.h>
utilizing namespace std;
void traverse(int i, int j, int N, int M,
vector<vector<bool> >& vis,
vector<vector<bool> >& row,
vector<vector<bool> >& col)
int depend(int N, int M, int Okay,
vector<vector<int> >& q)
{
vector<vector<bool> > row(N + 1,
vector<bool>(
M + 1, true));
vector<vector<bool> > col(N + 1,
vector<bool>(
M + 1, true));
vector<vector<bool> > vis(N + 1,
vector<bool>(
M + 1, false));
for (int i = 0; i < Okay; i++) {
if (q[i][0] == q[i][2]) {
int mn = min(q[i][1], q[i][3]);
row[q[i][0]][mn] = false;
}
else {
int mn = min(q[i][0], q[i][2]);
col[mn][q[i][1]] = false;
}
}
int TotalRegion = 0;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
if (!vis[i][j]) {
TotalRegion++;
traverse(i, j, N, M,
vis, row, col);
}
}
}
return TotalRegion;
}
int essential()
{
vector<vector<int> > q;
int N = 5, M = 5;
int Okay = 10;
q.push_back({ 2, 1, 2, 2 });
q.push_back({ 1, 2, 2, 2 });
q.push_back({ 1, 3, 2, 3 });
q.push_back({ 1, 4, 2, 4 });
q.push_back({ 2, 3, 3, 3 });
q.push_back({ 3, 3, 3, 4 });
q.push_back({ 3, 3, 4, 3 });
q.push_back({ 3, 3, 3, 2 });
q.push_back({ 3, 1, 3, 2 });
q.push_back({ 4, 1, 4, 2 });
cout << depend(N, M, Okay, q);
return 0;
}
[ad_2]