E. Split Into Two Sets 建模 + 染色法判奇环
题意
现在你需要把骨牌分成两堆,使得每一个堆里面都没有重复的数字。问是否可以实现.
题解
首先排除一些情况,一张牌上的数字不能相同,同时一个数字在所有牌上最多出现两次,否则无解。
建模过程:在每对
用染色法判断奇环。
int n; int flag = 0; int cnt[maxn]; int col[maxn]; vector<int> G[maxn]; void dfs(int x, int fa, int c) { if (col[x]) { if (col[x] != c) flag = 1; return ; } col[x] = c; for (auto i : G[x]) { if (i == fa) continue; dfs(i, x, 3 - c); } } void solve() { cin >> n; flag = 0; for (int i = 1; i <= n; i ++) cnt[i] = 0, col[i] = 0, G[i].clear(); for (int i = 1; i <= n; i ++) { int u, v; cin >> u >> v; if (u == v) flag = 1; cnt[u] ++, cnt[v] ++; G[u].push_back(v); G[v].push_back(u); } for (int i = 1; i <= n; i ++) if (cnt[i] > 2) flag = 1; if (flag) cout << "NO\n"; else { for (int i = 1; i <= n; i ++) { if (col[i]) continue; dfs(i, 0, 1); if (flag) { cout << "NO\n"; return; } } cout << "YES\n"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!