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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows 软RAID 1操作教程[通俗易懂]

    Windows 软RAID 1操作教程[通俗易懂]  文章原始地址:http://feotech.com/?p=190  本文将介绍基于Windows操作系统的软RAID1的创建于更换磁盘的操作方法,关于每种RAID的各自原理请点击以下Wikipedia链接查看https://en.wikipedia.org/wiki/Standard_RAID_levelsRAID1的特点是将相同数据同时写入2块硬盘中,起到数据…

    2022年7月15日
    103
  • 1DCNN实例,代码和结果

    1DCNN实例,代码和结果参考https://blog.csdn.net/yilulvxing/article/details/105028902,有一些小问题,修改后在自己电脑上跑了一遍简单说明几点:数据集result,按照0.8划分为train和test,train又按照0.8进一步划分为trainingsamples和validatingsamples;此案例的归一化只是简单的所有数据除以10000,感觉还需要改进from__future__importprint_functionimport

    2022年5月27日
    42
  • 微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)

    微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析、宏基因组、Python课程和转录组的线上直播课。报名参加线上直播课的老师可在1年内选择参加同课…

    2022年5月29日
    30
  • DrawCall_draw a drawing

    DrawCall_draw a drawing关于unity优化,DrawCall肯定占了比较重要的一部分,下面我们就简单了解一下什么是Drawcall。什么是DrawCall?在电脑运行层面理解:rawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall而每个drawcall都需要很多准备工作,检测渲染状态、提交

    2022年9月19日
    0
  • 四、网页信息存储和 BeautifulSoup之find用法

    四、网页信息存储和 BeautifulSoup之find用法网页信息存储和BeautifulSoup之find用法前言一、BeautifulSoup之find用法findfind_all具体使用示例二、网页信息存储1.基础知识2.写入数据总结前言上一章更新时时间太过匆忙,在这一章会解决上一章结尾问题BeautifulSoup之find用法,并进入爬虫的第三个流程,信息存储。一、BeautifulSoup之find用法BeautifulSoup有find和find_all的方法。但在使用之前一定要先建立一个beautifulsoup对象。find只

    2022年8月31日
    0
  • mysql面试题目及答案_docker 面试题

    mysql面试题目及答案_docker 面试题1.事务的基本特征原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的…

    2022年8月27日
    1

发表回复

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

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