POJ 3207 Ikki's Story IV – Panda's Trick (2-SAT)

POJ 3207 Ikki's Story IV – Panda's Trick (2-SAT)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

职务地址:找好矛盾关系。矛盾关系是(2,5)和(3,6)这两个仅仅能一个在外边,一个在里边。利用这个矛盾关系来建图。

能够用在外边和里边来当1和0,最后推断每对是否出现矛盾。

代码例如以下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>

using namespace std;
#define LL __int64
const int INF=0x3f3f3f3f;
int head[1100], cnt, top, ans, index;
int dfn[1100], low[1100], instack[1100], stak[1100], belong[1100];
struct node
{
    int u, v, next;
}edge[1000000];
struct N
{
    int l, r;
}xian[10000];
void add(int u, int v)
{
    edge[cnt].v=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}
int pan(N x, N y)
{
    if((x.l>y.l&&x.l<y.r&&x.r>y.r)||(x.r>y.l&&x.r<y.r&&x.l<y.l))
        return 1;
    return 0;
}
void tarjan(int u)
{
    dfn[u]=low[u]=++index;
    instack[u]=1;
    stak[++top]=u;
    for(int i=head[u];i!=-1;i=edge[i].next)
    {
        int v=edge[i].v;
        if(!dfn[v])
        {
            tarjan(v);
            low[u]=min(low[u],low[v]);
        }
        else if(instack[v])
        {
            low[u]=min(dfn[v],low[u]);
        }
    }
    if(dfn[u]==low[u])
    {
        ans++;
        while(1)
        {
            int v=stak[top--];
            instack[v]=0;
            belong[v]=ans;
            if(u==v) break;
        }
    }
}
void init()
{
    memset(head,-1,sizeof(head));
    cnt=top=ans=index=0;
    memset(dfn,0,sizeof(dfn));
    memset(instack,0,sizeof(instack));
}
int main()
{
    int n, m, i, j;
    scanf("%d%d",&n,&m);
    init();
    for(i=0;i<m;i++)
    {
        scanf("%d%d",&xian[i].l,&xian[i].r);
        if(xian[i].l>xian[i].r) swap(xian[i].l,xian[i].r);
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<i;j++)
        {
            if(pan(xian[i],xian[j]))
            {
                add(i<<1,j<<1|1);
                add(j<<1,i<<1|1);
                add(i<<1|1,j<<1);
                add(j<<1|1,i<<1);
                //printf("%d %d\n%d %d\n",i<<1,j<<1|1,j<<1,i<<1|1);
            }
        }
    }
    for(i=0;i<2*m;i++)
    {
        if(!dfn[i])
            tarjan(i);
    }
    int flag=0;
    for(i=0;i<m;i++)
    {
        if(belong[i<<1]==belong[i<<1|1])
        {
            flag=1;
            //printf("%d\n",i);
            break;
        }
    }
    if(flag) puts("the evil panda is lying again");
    else
        puts("panda is telling the truth...");
    return 0;
}

版权声明:本文博主原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117134.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月10日 上午10:00
下一篇 2022年1月10日 上午11:00


相关推荐

  • 基于matlab的语音信号频谱分析_声音信号的数字化过程

    基于matlab的语音信号频谱分析_声音信号的数字化过程1.概述随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向[1]。虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等[2]。从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传

    2022年8月11日
    8
  • SpringCloud-Eureka原理解析

    SpringCloud-Eureka原理解析微服务架构中最核心的部分是服务治理 服务治理最基础的组件是注册中心 随着微服务架构的发展 出现了很多微服务架构的解决方案 其中包括我们熟知的 Dubbo 和 SpringCloud 关于注册中心的解决方案 dubbo 支持了 Zookeeper Redis Multicast 和 Simple 官方推荐 Zookeeper SpringCloud 支持了 Zookeeper Consul 和 Eureka 官方推

    2026年3月26日
    3
  • 如何查看linux内核版本

    如何查看linux内核版本第一种 登录 linux 在终端输入 nbsp cat proc version nbsp nbsp 运行效果如下图 第二种 登录 linux 在终端输入 nbsp uname a nbsp 即列出 linux 的内核版本号 nbsp 运行效果如下图 第三种 在 Linux 终端输入 nbsp unmae a 即可查看 linux 的内核版本号 nbsp 运行效果如下图

    2026年3月17日
    2
  • 图片怎么一键重命名_多个图片重命名并按指定的顺序

    图片怎么一键重命名_多个图片重命名并按指定的顺序其主要功能是将某个目录下的指定文件复制到另一个目录下,同时:1.对于目录结构,可以选择将原各级子目录合并成一个目录,或保持原目录结构。2.对于文件名,可以选择(1).保持原文件名不变,但在重名时自动更名;(2).将所有文件重新编号,新文件名=前缀+分隔字符+编号,前缀可以指定,或用子目录名为前缀;(3).去掉原文件名的头几个字符;(4).在文件名开头添加指定的字符串;(5).在第n个字符后添加…

    2025年9月12日
    8
  • 反转每对括号间的子串java_利用栈判断字符串括号是否匹配

    反转每对括号间的子串java_利用栈判断字符串括号是否匹配给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:”dcba”示例 2:输入:s = “(u(love)i)”输出:”iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:”leetcode”示例 4:输入:s = “a(bcdefghijkl(mno)p)q”输出:”apmnolkjihgf

    2022年8月9日
    8
  • 配置zabbix时启动失败解决办法

    配置zabbix时启动失败解决办法一开始按照这篇博客来配置zabbixhttps://blog.csdn.net/rujianxuezha/article/details/79842998启动zabbix时出现以下提示[root@www~]#systemctlstartzabbix-serverJobforzabbix-server.servicefailedbecauseaconfiguredresourc…

    2022年6月17日
    316

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号