自己刚开始没思路。。
看到n最大到20,小于25,可以想到用二进制dfs做。。。
int bits(int n) {
int cnt = 0;
while (n) {
cnt++;
n &= (n - 1);
}
return cnt;
}
int f(const vector<vector<int>>& nums, int m) {
int n = nums.size(), ans = 1;
for (int i = 1; i <= (1 << n) - 1; ++i) {
vector<int> flag(m + 1);
bool f2 = true;
for (int j = 0; (1 << j) <= i && f2; ++j) {
if (!(i & (1 << j))) continue;
if (!flag[nums[j][0]]) flag[nums[j][0]] = 1;
else f2 = false;
if (!flag[nums[j][1]]) flag[nums[j][1]] = 1;
else f2 = false;
}
if (f2) ans = max(ans, bits(i));
}
return ans;
}