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


相关推荐

  • mysql的innodb与myisam(oracle主键和唯一索引的区别)

    InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索…

    2022年4月14日
    75
  • Postgresql+Springboot yml基本使用[通俗易懂]

    Postgresql+Springboot yml基本使用[通俗易懂]一、Postgresql介绍PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函

    2025年7月14日
    3
  • 可以识别图片上的文字的小程序

    可以识别图片上的文字的小程序微信上的小程序相信大家都不陌生,近年来,微信小程序从“跳一跳”之后,越发火了。由于小程序的出现,微信上的功能也逐渐增加了,今天就给大家介绍一个小程序,比较实用,它可以快速识别图片上的文字,这个小程序呢就叫“迅捷文字识别”。这是一个比较智能的文字识别的小程序,它可以将识别出来的字汉英互译,还可以直接拍照翻译,接下来就给大家介绍一下这个小程序的操作方法。1.首先,我们现在微信上找到这个程序,点…

    2022年5月29日
    47
  • 软件工程师业绩简要描述(优秀员工工作业绩和自我评价)

    1/9JAVA软件工程师简历自我评价具有很强的团队精神,有良好的组织和协调能力,有强烈的集体荣誉感。自学能力强,喜欢钻研新技术,敢于面对和克服困难。熟练使用spring+struts+hibernate整合开发。熟练使用jsp、servlet、jstl、jdbc下的编程开发。熟练使用eclipseide开发工具,熟练掌握tomcat等web容器以及j2ee容器的配置以及部署,能够使用junit进行…

    2022年4月13日
    377
  • pandas中的drop函数_pandas replace函数

    pandas中的drop函数_pandas replace函数这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    2025年12月6日
    6
  • a*算法最短路径_最长路径算法

    a*算法最短路径_最长路径算法#include#include#include#include#include#defineN1000#defineinf1<<30;usingnamespacestd;/* a星算法,找寻最短路径 算法核心:有两个表open表和close表 将方块添加到open列表中,该列表有最小的和值。且将这个方块称为S吧。 将S从open列表移除,然后添加

    2022年10月6日
    5

发表回复

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

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