[ICPC2019上海K] Color Graph - 二分图
Description
给定一个 n 个点 m 条边的无向联通图。让你对边染色,使得染完色之后不存在奇环,且染的边数最大。输出这个最大的边数 (n le 16)
Solution
由于 n 很小,我们暴力枚举二分图的一个部,那么这会唯一对应一个二分子图
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int n, m;
cin >> n >> m;
vector<pair<int, int>> e;
for (int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
e.push_back({u, v});
}
int ans = 0;
for (int s = 0; s < (1 << n); s++)
{
bitset<19> bs(s << 1);
int tmp = 0;
for (auto [u, v] : e)
{
if (bs[u] != bs[v])
++tmp;
}
ans = max(ans, tmp);
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
int cnt = 0;
while (t--)
{
cout << "Case #" << (++cnt) << ": ";
solve();
}
}