当前位置: 首页 > news >正文

P5782 [POI 2001] 和平委员会

P5782 [POI 2001] 和平委员会

大意

\(n\) 个党派,每个党派 \(i\) 有两个代表 \(2i,2i + 1\),然后给你 \(m\) 对互相厌恶的关系,求方案。

思路

那么,相当于每个党派的两个代表就是两种情况,然后直接按其说的厌恶的关系建边跑 \(\text{2 - SAT}\) 即可。

代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;const int MAXN = 16005;
int n, m;
vector<int> g[MAXN];
bool vis[MAXN];
int S[MAXN], c = 0;inline int get_id(int x) {x--;return x;
}bool dfs(int u) {if (vis[u ^ 1]) return false;if (vis[u]) return true;vis[u] = true;S[c++] = u;for (int v : g[u]) {if (!dfs(v)) return false;}return true;
}bool Two_SAT() {memset(vis, 0, sizeof(vis));for (int i = 0; i < 2 * n; i += 2) {if (!vis[i] && !vis[i + 1]) {c = 0;if (!dfs(i)) {while (c > 0) vis[S[--c]] = false;if (!dfs(i + 1)) {return false;}}}}return true;
}int main() {ios::sync_with_stdio(false);cin.tie(0);cin >> n >> m;for (int i = 0; i < m; i++) {int a, b;cin >> a >> b;int u = get_id(a);int v = get_id(b);g[u].push_back(v ^ 1);g[v].push_back(u ^ 1);}if (!Two_SAT()) {cout << "NIE" << endl;} else {vector<int> ans;for (int i = 0; i < 2 * n; i += 2) {if (vis[i]) {ans.push_back(i + 1);} else {ans.push_back(i + 2);}}sort(ans.begin(), ans.end());for (int x : ans) {cout << x << endl;}}return 0;
}
http://www.jsqmd.com/news/111469/

相关文章:

  • 1. Markdown语法
  • 斯特林数杂谈
  • [Non] - 选举
  • 浅析Cursor Rules了解(工作原理、四种规则类型对比、文件结构、分层设计)及如何在项目中使用的最佳实践
  • 辛普森法则
  • GitCode克隆输入账号密码后报错
  • 《嘟嘟脸恶作剧》:说是捏脸,你还真捏脸啊?
  • [生存技能] 速冻包子热处理工艺优化研究:基于家庭厨房环境的操作规程
  • 英语_阅读_if Your computer broke down_待读
  • 《C语言电子书-2026最新版》-C语言数据类型概述
  • RadeGS——PCC损失
  • FFmpeg 关键的结构体
  • 优化:三数之和,最接近的三数之和
  • 自动化机器学习AutoML:TPOT工具从零到实战完整使用教程
  • 实用指南:GitHub 热榜项目 - 日榜(2025-11-20)
  • JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5 - 实践
  • 第六十二篇
  • RadeGS——添加法向量损失
  • 12月18日总结 - 作业----
  • XSS(跨站脚本攻击)
  • 自考ScrumMaster-PSM:经验分享~
  • Python - dataclass
  • P1330 封锁阳光大学
  • 9 个降AI率工具,研究生必看!
  • [POI 2021/2022 R1] Domino 题解
  • 07_软考_程序设计语言
  • 17.行为型 - 观察者模式 (Observer Pattern)
  • 云原生热点聚焦:OpenTofu 1.11.0 发布与关键工具更新
  • GitCode项目创建分支并提交代码
  • Bitcraze介绍