洛谷P-4782 2-sat+Tarjan
https://www.luogu.org/problemnew/solution/P4782
这里的大佬已经说的够好了
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- #include<vector>
- #include<stack>
- #define maxn 2002010
- using namespace std;
- vector<int>G[maxn];
- stack<int>s;
- void insert(int be, int en) {
- G[be].push_back(en);
- }
- int low[maxn], dfn[maxn], df, ans, clor[maxn];
- int tarjan(int x) {
- //cout << x << endl;
- low[x] = dfn[x] = ++df;
- s.push(x);
- for (int i = 0; i < G[x].size(); i++) {
- int p = G[x][i];
- if (!dfn[p]) {
- tarjan(p);
- low[x] = min(low[x], low[p]);
- }
- else if (!clor[p]) {
- low[x] = min(low[x], dfn[p]);
- }
- }
- if (low[x] == dfn[x]) {
- ans++;
- while (1) {
- int a = s.top();
- s.pop();
- clor[a] = ans;
- if (a == x) break;
- }
- }
- return 0;
- }
- int n, m;
- int main() {
- int n, m;
- scanf("%d %d", &n, &m);
- int be, en, a, b;
- for (int i = 0; i < m; i++) {
- scanf("%d %d %d %d", &be, &a, &en, &b);
- insert(be + a * n, en + (b ^ 1)*n);
- insert(en + b * n, be + (a ^ 1)*n);
- }
- for (int i = 1; i <= 2*n; i++) {
- if (!dfn[i]) tarjan(i);
- }
- for (int i = 1; i <= n; i++) {
- if (clor[i] == clor[i + n]) {
- //cout << clor[i] << " " << clor[i + n] << endl;
- printf("IMPOSSIBLE\n");
- return 0;
- }
- }
- printf("POSSIBLE\n");
- for (int i = 1; i <= n; i++) {
- printf("%d ", clor[i] > clor[i + n]);
- }
- printf("\n");
- return 0;
- }
洛谷P-4782 2-sat+Tarjan的更多相关文章
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- ⌈洛谷5058⌋⌈ZJOI2004⌋嗅探器【Tarjan】
题目连接 [洛谷传送门] [LOJ传送门] 题目描述 某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络,蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心 ...
- 【洛谷2416】泡芙(Tarjan+LCA)
题目描述 火星猫经过一番努力终于到达了冥王星.他发现冥王星有 \(N\) 座城市,\(M\) 条无向边.火星猫准备出发去找冥王兔,他听说有若干泡芙掉落在一些边上,他准备采集一些去送给冥王兔.但是火星猫 ...
- 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)
P3469 [POI2008]BLO-Blockade https://www.luogu.org/problem/P3469 题目描述 There are exactly nn towns in B ...
- 洛谷 P3627 [APIO2009]抢掠计划 Tarjan缩点+Spfa求最长路
题目地址:https://www.luogu.com.cn/problem/P3627 第一次寒假训练的结测题,思路本身不难,但对于我这个码力蒟蒻来说实现难度不小-考试时肛了将近两个半小时才刚肛出来. ...
- 【洛谷P5008 逛庭院】tarjan缩点+贪心
既然没有题解,那么我就来提供给一份. -- 首先我们看到数据范围.妈耶!数据这么大,一开始还想用个DP来做,但是看着就不行,那么根据这个数据范围,我们大致可以猜到这道题的算法是一个贪心,那么我们怎么贪 ...
- 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码
洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...
- 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
题目链接 [洛谷传送门] 题解 很显然,当这个点不是割点的时候,答案是\(2*(n-1)\) 如果这个点是割点,那么答案就是两两被分开的联通分量之间求组合数. 代码 #include <bits ...
- NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...
- 洛谷P3275 [SCOI2011]糖果(差分约束,最长路,Tarjan,拓扑排序)
洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证 ...
随机推荐
- SQL if语句简要
if语句 可以作为表达式用 可以在存储过程中作为流程控制语句用 表达式 IF(条件,条件true,条件false) 示例 sex字段m,f 互换 update salary set sex = if( ...
- vim删除行
0,vim filename 1,显示行号 :set number 2,跳转到第1000行 1000G (跳转到文件末尾:“G”) 3,删除1-1000行 :1,.d 4,删除所有行 先跳转到文件最后 ...
- oracle查看编码格式及修改
一.查看编码 1.查看oracle数据库编码 命令:select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; ...
- mybatis多排序问题
在很多业务场景中,会有多排序问题,mybatis支持多排序,写法如下: ORDER BY contract.contractCount DESC, reward.rewardTotal DESC, n ...
- 基于Qt框架的GUI控制台——qtconsole
- QT自定义窗口
qt 中允许自定义窗口控件,使之满足特殊要求, (1)可以修改其显示,自行绘制 (2)可以动态显示 (3)可以添加事件,支持鼠标和键盘操作 自定义控件可以直接在QtDesigner里使用,可以直接加到 ...
- oralce函数 next_day(d1[,c1])
[功能]:返回日期d1在下周,星期几(参数c1)的日期 [参数]:d1日期型,c1为字符型(参数),c1默认为j(即当前日期) [参数表]:c1对应:星期一,星期二,星期三……星期日 [返回]:日期 ...
- oracle函数 extract(c1 from d1)
[功能]:日期/时间d1中,参数(c1)的值 [参数]:d1日期型(date)/日期时间型(timestamp),c1为字符型(参数) [参数表]:c1对应的参数表详见示例 [返回]:字符 [示例] ...
- Error While Loading Shared Libraries, Cannot Open Shared Object File
In the "I wish the Internet had an actual correct answer" category comes a question from a ...
- 网上很多laravel中cookie的使用方法。
https://blog.csdn.net/chen529834149/article/details/75244718 概述 Cookie的添加其实很简单,直接使用Cookie::make(),在使 ...