首页 > 其他分享 >D38 2-SAT CF27D Ring Road 2

D38 2-SAT CF27D Ring Road 2

时间:2024-08-05 18:40:32浏览次数:8  
标签:head int dfn low Ring Road CF27D

视频链接:D38 2-SAT CF27D Ring Road 2_哔哩哔哩_bilibili

 

 

 

CF27D Ring Road 2 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N=205;
int n,m,x[N],y[N];
int dfn[N],low[N],stk[N],scc[N],tim,top,cnt;
int head[N],idx;
struct Edge{int to,ne;}e[20005];

void add(int a,int b){
  e[++idx].to=b;
  e[idx].ne=head[a];
  head[a]=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;
  }
}
int main(){
  scanf("%d%d",&n,&m);
  for(int i=1;i<=m;i++){
    scanf("%d%d",&x[i],&y[i]);
    if(y[i]<x[i]) swap(x[i],y[i]);
  }
  for(int i=1;i<=m;i++)
    for(int j=1;j<=m;j++)
      if(x[i]<x[j]&&x[j]<y[i]&&y[i]<y[j]
       ||x[j]<x[i]&&x[i]<y[j]&&y[j]<y[i]){
        add(i,j+m); //i内j外
        add(i+m,j); //i外j内
      }
        
  for(int i=1;i<=2*m;i++) if(!dfn[i]) tarjan(i);
  for(int i=1;i<=m;i++)
    if(scc[i]==scc[i+m])
      return puts("Impossible"),0;
  for(int i=1;i<=m;i++)
    scc[i]<scc[i+m]?putchar('i'):putchar('o');
}

 

标签:head,int,dfn,low,Ring,Road,CF27D
From: https://www.cnblogs.com/dx123/p/18340869

相关文章

  • Springboot图片上传压缩
    原文链接:https://blog.csdn.net/hanerer1314/article/details/96175436需求背景说明最近后端管理项目中需要用到用户一些证件图片进行表单文件的上传如果每个人的证件照片都非常大,对服务器资源将是一种浪费,因为用户量也不是很大,所以也没对接第三方的OSS或者七牛云存储对象,就写......
  • Spring Cloud微服务项目集成MyBatis
            在现代软件开发中,微服务架构已经成为一种流行的解决方案,它能够将应用程序拆分成多个小的、独立的服务。每个服务负责一个特定的业务功能,并可以独立部署和扩展。SpringCloud是一个提供各种工具和框架以支持微服务开发的开源框架,而MyBatis是一个流行的持久层......
  • 计算机毕业设计必看必学!! 85583 springboot高校网上选课系统,原创定制程序, java、PHP
                                                  摘要本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,......
  • 基于Docker Swarm、Portainer和Jenkins的Spring Cloud服务自动构建和部署
    本文探讨基于DockerSwarm、Portainer和Jenkins的SpringCloud微服务自动构建和部署。相对本文讨论的方案,业界更主流的是基于k8s,显而易见k8s的功能更强大,但也更复杂,也需要投入更多开发和运维成本。对于小公司,集群规模不会很大,DockerSwarm加上Portainer可以满足大部分需求,建议可以......
  • SpringBoot-事件监听机制
    SpringBoot-事件监听机制  本文参考的SpringBoot版本是2.6.13  一、SpringBoot启动事件顺序 事件执行顺序: 1. ApplicationStartingEvent   springboot最开始启动时触发,SpringApplication.run()之前发送。 2.ApplicationEnvironm......
  • tomcat10 springboot项目部署成功但springboot没有启动日志问题
    问题描述项目在tomcat8可以启动成功,请求也可以正常处理,在tomcat10上只有部署成功信息比如:deployWARDeploymentofwebapplicationarchive[/data1/WWW/webapps/XXX.war]hasfinishedin[127]ms,但是没有springboot启动的信息。该问题不属于springboot打包为war包不成......
  • String类常用方法
    常用方法字符串比较:equals(Objectanother):比较两个字符串的内容是否相等。equalsIgnoreCase(Stringanother):比较两个字符串的内容,忽略大小写。字符串长度:length():返回字符串的长度。字符串转换:toString():返回其自身的字符串表示形式。valueOf(类型x......
  • StringBuffer 和 StringBuilder
    StringBuffer和StringBuilder目录StringBuffer和StringBuilderStringBuffer:StringBuilder常用方法StringBuffer:StringBuffer是线程安全的。这意味着它的方法是同步的,可以在多线程环境中使用而不会出现问题。由于同步,StringBuffer的性能比StringBuilder稍低,特别是......
  • Springboot注解
    Springboot注解DAO、Service、Controller1、dao层dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行......
  • pytorch学习笔记5 tensor 广播broadcasting
    不同shape直接加减,系统会自动做broadcasting操作先右对齐(小维度对齐)比如:Featuremaps:[4,32,14,14]Bias:[32,1,1]=>][1,32,1,1]=>[4,32,14,14]做到与Featuremaps的shape相同,才能进行相加广播扩展的时候只是做这样的操作,并不实质拷贝数据,以节省内存空间可广播的条件......