sat错题分数换算表_acwing算法基础

sat错题分数换算表_acwing算法基础给定 n 个还未赋值的布尔变量 x1∼xn。现在有 m 个条件,每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”,例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。现在,请你对这 n 个布尔变量进行赋值(0 或 1),使得所有 m 个条件能够成立。输入格式第一行包含两个整数 n,m。接下来 m 行,每行包含四个整数 i,a,j,b,用来描述一个条件,表示 “xi 为 a 或 xj 为 b”。输出格式如果问题有解,则第一行输出 POSS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定 n 个还未赋值的布尔变量 x1∼xn。

现在有 m 个条件,每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”,例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。

现在,请你对这 n 个布尔变量进行赋值(0 或 1),使得所有 m 个条件能够成立。

输入格式
第一行包含两个整数 n,m。

接下来 m 行,每行包含四个整数 i,a,j,b,用来描述一个条件,表示 “xi 为 a 或 xj 为 b”。

输出格式
如果问题有解,则第一行输出 POSSIBLE,第二行输出 n 个整数表示赋值后的 n 个变量 x1∼xn 的值(0 或 1),整数之间用单个空格隔开。

如果问题无解,则输出一行 IMPOSSIBLE 即可。

如果答案不唯一,则输出任意一种正确答案即可。

数据范围
1≤n,m≤106,
1≤i,j≤n,
0≤a,b≤1

输入样例:
3 2
1 1 3 1
2 0 3 0
输出样例:
POSSIBLE
1 1 0
#include<bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;
const int M = 2e6 + 10;
struct Edge{ 
   
    int v,next;
}edge[M];
int head[N],cnt;
int num[N],low[N],dfn;
int scc[N],sccno;
int sta[N],in_sta[N],top;
int vis[N];
void add(int u,int v){ 
   
    edge[cnt].v = v;
    edge[cnt].next = head[u];
    head[u] = cnt ++;
}
void Tarjan(int u){ 
   
    low[u] = num[u] = ++ dfn;
    sta[top ++] = u,in_sta[u] = true;
    for(int i = head[u];~i;i = edge[i].next){ 
   
        int v = edge[i].v;
        if(!num[v]){ 
   
            Tarjan(v);
            low[u] = min(low[u],low[v]);
        }
        else if(in_sta[v])low[u] = min(low[u],num[v]);
    }
    if(num[u] == low[u]){ 
   
        sccno ++;
        while(1){ 
   
            int t= sta[-- top];
            scc[t] = sccno;
            in_sta[t] = false;
            if(t == u)break;
        }
    }
}
int main(){ 
   
    int n,m;
    cin>>n>>m;
    int x,a,y,b;
    ios::sync_with_stdio(true);
    memset(head,-1,sizeof head);
    for(int i = 0;i < m; i ++){ 
   
        scanf("%d%d%d%d",&x,&a,&y,&b);
        x --,y --;
        add(2 * x + !a,2 * y + b);
        add(2 * y + !b,2 * x + a);
    }
    for(int i = 0;i < 2 * n;i ++){ 
   
        if(!num[i])Tarjan(i);
    }
    for(int i = 0;i < n;i ++){ 
   
        if(scc[2 * i] == scc[2 * i + 1]){ 
   
            cout<<"IMPOSSIBLE"<<endl;
            return 0;
        }
    }
    cout<<"POSSIBLE"<<endl;
    for(int i = 0;i < n;i ++){ 
   
        if(scc[2 * i] < scc[2 * i + 1])printf("0 ");
        else printf("1 ");
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无阻塞情况connect生产EINPROGRESS错[通俗易懂]

    无阻塞情况connect生产EINPROGRESS错[通俗易懂]今天的游戏开发client测试程序,非常多,因为出现client。后connect成功。代码证recv系统调用。后来发现,可能是由于socket默认模式被阻止,这将使很多client接处于链接却不能数据传输状态。后来改动socket为非堵塞模式,但在connect的时候,发现返回值为-1,刚開始以为是connect出现错误,但在server上看到了链接是ESTABLISED…

    2022年7月16日
    13
  • arm和x86对比_arm和intel关系

    arm和x86对比_arm和intel关系信不信,随便逮住一个人问他知不知道CPU,我想他的答案一定会是肯定的,但是如果你再问他知道ARM和X86架构么?这两者的区别又是什么?绝大多数的人肯定是一脸懵逼。今天小编就带你深入了解CPU的这两大架构:ARM和X86。以后出去装X就靠它了! ##重温下CPU是什么鬼##  中央处理单元(CPU)主要由运算器、控制器、寄存器三部分组成,从字面意思看运算器就是起着运算的作用,控制器就是负责发

    2022年10月14日
    0
  • [深度学习] RNN对于变长序列的处理方法, 为什么RNN需要mask

    [深度学习] RNN对于变长序列的处理方法, 为什么RNN需要mask一Padding文本数据在处理的时候,由于各样本的长度并不一样,有的句子长有的句子短。抛开动态图、静态图模型的差异,由于需要进行矩阵运算,句长需要是等长的才可以,这就需要padding操作。padding一般是用最长的句子长度为最大长度,然后其他样本补0到最大长度,这样样本就是等长的了。但是注意padding后的样本如果不作处理只用普通的循环神经网络来做的话其实是有影响的,因为即使输入…

    2022年8月30日
    0
  • 清除挖矿脚本 minerd[通俗易懂]

    清除挖矿脚本 minerd[通俗易懂]症状:cup占用率飙高原因:这次入侵是由于redis没有设置用户名密码,没有限制访问ip导致 解决方法:ps-eopcpu,args–sort=%cpu|head  找到飙高的程序是minerdTOP查看minerd的pidkill-s9pid(pid的值每个服务器不同)rm-rf /var/spool/cron/cronta

    2022年7月13日
    15
  • webservice 实例 创建与 调用「建议收藏」

    webservice 实例 创建与 调用「建议收藏」webservice实例创建与调用序webservice选型配置代码webservice接口层接口实现实体webservice挂靠配置启动服务测试服务测试:测试地址客户端生成环境配置代码生成序对接SAP系统,指定要用webservice做对接。不然打死也不用webservice,感觉webService也实现不怎么流行了,过程中遇到了不少问题。就javawebservice而言,框架就有不下十种。网上的教程更是五花八门,零零碎碎,并且很多误导。本博将记录下项目里用的webservi

    2022年7月21日
    21
  • 面试100题及答案_三特点带你认识基层岗位常见面试题

    面试100题及答案_三特点带你认识基层岗位常见面试题第1期:JS中关闭当前的窗口的方法是:。答案:window.close();第2期:js中使字符串中的字符变为小写的方法是:。答案:toLowerCase方法;第3期:在js中,让浏览器弹出确认框的语句是:。答案:confirm;例如:window.confirm(“我就是确认框”);运行结果是浏览器弹出信息确认框,点击确定,返回true,反之返回false。第4期:把7.25四舍…

    2022年8月27日
    2

发表回复

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

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