D37 2-SAT P3007 [USACO11JAN] The Continental Cowngress G

news/2025/3/19 2:35:33/文章来源:https://www.cnblogs.com/dx123/p/18340851

视频链接:D37 2-SAT P3007 [USACO11JAN] The Continental Cowngress G_哔哩哔哩_bilibili

 

 

P3007 [USACO11JAN] The Continental Cowngress G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// O(n*n)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;const int N=2005;
int n,m;
char s1[10],s2[10];
int dfn[N],low[N],stk[N],scc[N],tim,top,cnt;
int head[N],idx,vis[N];
struct Edge{int to,ne;}e[8005];void add(int x,int y){e[++idx].to=y;e[idx].ne=head[x];head[x]=idx;
}
void tarjan(int x){dfn[x]=low[x]=++tim;stk[++top]=x;for(int i=head[x];i;i=e[i].ne){int y=e[i].to;if(!dfn[y]){ //若y尚未访问
      tarjan(y);low[x]=min(low[x],low[y]);}else if(!scc[y]) //若y已访问且未处理low[x]=min(low[x],dfn[y]);}if(low[x]==dfn[x]){ //若x是SCC的根++cnt;for(int y=-1;y!=x;) scc[y=stk[top--]]=cnt;}
}
void dfs(int x){vis[x]=1;for(int i=head[x];i;i=e[i].ne)if(!vis[e[i].to]) dfs(e[i].to);
}
int check(int x){memset(vis,0,sizeof(vis));dfs(x); //找出以x为起点的链上的点// 如果能从x走到x+n或x-n,则返回 trueif(vis[x]&&vis[x<=n?x+n:x-n]) return 1;return 0;
}
int main(){scanf("%d %d",&n,&m);for(int i,j,a,b;m--;){scanf("%d %s %d %s",&i,s1,&j,s2);a=(s1[0]=='Y'); //N:0,i和Y:1,i+nb=(s2[0]=='Y');add(i+!a*n,j+b*n),add(j+!b*n,i+a*n);}for(int i=1;i<=2*n;++i) if(!dfn[i]) tarjan(i);for(int i=1;i<=n;++i)if(scc[i]==scc[i+n]){puts("IMPOSSIBLE"); return 0;}for(int i=1,x,y;i<=n;++i){x=check(i);   //若i→i+n,则取Yy=check(i+n); //若i+n→i,则取Nif(x&&!y) putchar('Y');else if(!x&&y) putchar('N');else if(!x&&!y) putchar('?');}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777625.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 文件 I/O流详解

文件文件操作是Java开发中一个重要的组成部分,它允许开发者对文件进行读取,写入,创建,删除和修改等操作,文件操作的主要通过java.io包中的类来实现的,其中的File类更是文件操作的核心类File类的常用方法 创建文件或目录文件创建使用createNewFile();可以创建一个新的空文件,如果…

kubelet节点资源预留

目录一、Node Allocatable1、node资源预留1.1 为什么要做资源预留?1.2 node allocatable1.2.1 查看node节点资源1.2.2 确认node01节点资源2、 配置资源预留2.1 kube预留值2.2 systemReserved预留2.3 evictionHard预留2.4 整体配置2.5 重启服务2.6 Allocatable资源说明 一、N…

mysql 是否该数据列每个数据都唯一就应该设置唯一索引?

前言 比较一下唯一索引和普通索引的区别。 如果有一列数据唯一,这个时候是否是就直接设置唯一索引,这样可以避免插入重复的值,来实现业务需求。 那么唯一索引是如何保持唯一的呢?这个对性能是否有影响。 正文 数据库我们知道是增删改查。 那么首先来看下这个查,唯一索引是…

Markdown 达人必备!轻松几步画出专业流程图

流程图,顾名思义,就是表示一个事件或活动的流程的图示。流程图,顾名思义,就是表示一个事件或活动的流程的图示。 ‍ ‍ 快速入门 最简单的例子:从 A 到 B graph TDA --> B‍ 效果: graph TDA --> B ‍ ‍ 注意起始的关键字“grpah”是必须的,表明这是流程图。 后续…

CVE-2023-1313 复现

CVE-2023-1313 复现cockpit在2.4.1版本之前存在任意文件上传漏洞PS:通过在浏览器中打开/install来运行安装首先看到了一个登录页面.我们按照提示访问/install,成功的添加了用户名和密码都为admin,登录. 来到如下界面,可以进行任意文件上传然后点击三个点可以选择下载文件,将得…

使用 addRouteMiddleware 动态添加中间

title: 使用 addRouteMiddleware 动态添加中间 date: 2024/8/4 updated: 2024/8/4 author: cmdragon excerpt: 摘要:文章介绍了Nuxt3中addRouteMiddleware的使用方法,该功能允许开发者动态添加路由中间件,以实现诸如权限检查、动态重定向及路由变化时的特定操作。内容涵盖…

DirectX9(D3D9)游戏开发:高光时刻录制和共享纹理的踩坑

共享纹理 老游戏使用directx9无法直接与cc高光sdk(d3d11)对接,但是d3d9ex有共享纹理,我们通过共享纹理把游戏画面共享给cc录制,记录一些踩坑的笔记。 共享纹理示例: // 初始化Direct3D void initD3D9(HWND hWnd) {hr = d3d9exdev->GetRenderTarget(0, &g_d3d9Render…

三数之和(双指针法)

题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 双指针法:首先我们要对数…

Nessus Professional 10.8.0 Auto Installer for macOS Sonoma

Nessus Professional 10.8.0 Auto Installer for macOS SonomaNessus Professional 10.8.0 Auto Installer for macOS Sonoma 发布 Nessus 试用版自动化安装程序,支持 macOS Sonoma、RHEL 9 和 Ubuntu 24.04 请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-…

Nexpose v6.6.263 for Linux Windows - 漏洞扫描

Nexpose v6.6.263 for Linux & Windows - 漏洞扫描Nexpose v6.6.263 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Jul 31, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。您的本地漏…

最佳包裹

求三维凸包用增量法求解 假设我们已经维护好了前面的点的凸包,对于新加入的点: 如果这个点在凸包内部显然那就不用管了 如果这个点在凸包外部,那么考虑如下情况:将新点\(P_r\)当做光源,照的到的面全部删掉,照不到的面保留下来即可 如何判断一个面是否能够被照到:取多面体…

数值分析方法

数值分析复习笔记数值分析方法 数值方法可以用近似方法来理解 对于一些得不到解析解否则解析解计算难度太大的问题,如何用较少的计算得到相对较好(满足精度要求)的数值解、近似解。数值分析最基本的立足点是容许误差 例子:近似计算基本方法:离散化(e.g. 数值积分) 递推法(将…