Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;int n, m;vector<vector<int>> row, col;vector<bool> rvis, cvis;bool dfs(int c) {if (c >= m) return true;if (cvis[c]) return dfs(c + 1);for (int r : col[c]) if (!rvis[r]) {vector<int> rtmp, ctmp;for (int cc : row[r]) if (!cvis[cc]) {cvis[cc] = true;ctmp.push_back(cc);for (int rr : col[cc]) if (!rvis[rr]) {rvis[rr] = true;rtmp.push_back(rr);}}if (dfs(c + 1)) return true;for (int cc : ctmp) cvis[cc] = false;for (int rr : rtmp) rvis[rr] = false;}return false;}bool solve() {rvis.clear(); rvis.resize(n);cvis.clear(); cvis.resize(m);return dfs(0);}int main() {int T; scanf("%d", &T); while (T--) {