[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2-SAT)

题面

题面较长,略

分析

考虑把问题转化成一个依赖性问题

我们把每只奶牛投出的两票中至少有一票和最终结果相符合转化:一只奶牛刚好投两次票,所以只要不满足奶牛的其中一次投票,就要满足另一次,这样就转化成了依赖性问题。

然后把每个议案拆成两个点,一个代表Y,一个代表N,每次把第一票不符合的点向符合的点连边,跑2-SAT

如果用传统的tarjan算法不好判断Y,N都可以的情况,观察数据范围\(n \leq 1000,m \leq 4000\),每次判断的的时候直接枚举第i个议案的结果是Y还是N,然后从对应的两个拆点开始BFS,看看有没有矛盾即可。如果两个点都没有矛盾,输出?.

时间复杂度\(O(n(n+m))\)

代码

//Tarjan+拓扑不好判断?的情况,暴力dfs
//xi为A或xj为B 转化为 xi为B且xj为A
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#define maxn 1000
using namespace std;
int n,m;
vector<int>E[maxn*2+5];
void add_edge(int u,int v){
// printf("%d %d\n",u,v);
E[u].push_back(v);
}
int mark[maxn*2+5];
void dfs(int x){
mark[x]=1;
for(int y : E[x]){
if(!mark[y]) dfs(y);
}
} bool check(int x){
for(int i=1;i<=n*2;i++) mark[i]=0;
dfs(x);
for(int i=1;i<=n;i++){
if(mark[i]&&mark[i+n]) return 0;
}
return 1;
} char ans[maxn+5];
int main(){
char op1[2],op2[2];
int u,v,p,q;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d %s %d %s",&u,op1,&v,op2);
if(op1[0]=='Y') p=1;
else p=0;
if(op2[0]=='Y') q=1;
else q=0;
add_edge(u+n*p,v+n*(1-q));
/*
i为Y,i+n为N
举例理解,如果op1和op2为Y,N
那么第一个询问是N,不满足,对应的点就是u+1*n,第二个询问是N,满足,对应的点就是v+1*n
*/
add_edge(v+n*q,u+n*(1-p));
}
bool flag1,flag2;
for(int i=1;i<=n;i++){
flag1=check(i);
flag2=check(i+n);
if(!flag1&&!flag2){
printf("IMPOSSIBLE\n");
return 0;
}else if(flag1&&!flag2){
ans[i]='Y';
}else if(!flag1&&flag2){
ans[i]='N';
}else{
ans[i]='?';
}
}
for(int i=1;i<=n;i++) printf("%c",ans[i]);
}

[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2-SAT)的更多相关文章

  1. P3007 [USACO11JAN]大陆议会The Continental Cowngress

    P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意: 给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 "支持或反对某法案&q ...

  2. Luogu P3007 [USACO11JAN]大陆议会The Continental Cowngress

    P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意 题意翻译 简述:给出\(n\)个法案,\(m\)头牛的意见,每头牛有两个表决格式为"支持 ...

  3. P3007 [USACO11JAN]大陆议会The Continental Cowngress(2-SAT)

    简述:给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 “支持或反对某法案”, 每头牛需要至少满足一个表决, 不可能成立的话输出 IMPOSSIBLE, 否则输出方案, Y代表能, N代 ...

  4. [USACO11JAN]大陆议会The Continental Cowngress_2-sat

    [USACO11JAN]大陆议会The Continental Cowngress_2-sat 题意: 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会. 议会以“每头 ...

  5. bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat

    noip之前学的内容了,看到题竟然忘了怎么建图了,复习一下. 2-sat 大概是对于每个元素,它有0和1两种选择,必须选一个但不能同时选.这之间又有一些二元关系,比如x&y=1等等... 先把 ...

  6. BZOJ 2199: [Usaco2011 Jan]奶牛议会

    2199: [Usaco2011 Jan]奶牛议会 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 375  Solved: 241[Submit][S ...

  7. BZOJ 2199: [Usaco2011 Jan]奶牛议会 [2-SAT 判断解]

    http://www.lydsy.com/JudgeOnline/problem.php?id=2199 题意:裸的2-SAT,但是问每个变量在所有解中是只能为真还是只能为假还是既可以为真又可以为假 ...

  8. [BZOJ 2199] 奶牛议会

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2199 [算法] 2-SAT [代码] #include<bits/stdc++ ...

  9. BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)

    题目链接 建边不说了.对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾 Tarjan也用不到 //964kb 76ms #include <cstdio> ...

随机推荐

  1. 安装了sql-alchemy但导入sql_alchemy时失败

    问题描述:按成flask-sqlalchemy成功了,但是项目导入flask_alchemy时出错 但是,发现在代码中还是导入不了 之后发现问题,到file->setting->proje ...

  2. Django orm(1)

    目录 一.orm查询 1.1配置测试脚本 1.1.1Django终端打印SQL语句的配置 1.2单表操作 1.2.1创建数据 1.2.2修改数据 1.2.3删除数据 1.2.4查询数据 1.2.5计数 ...

  3. 【leetcode】1129. Shortest Path with Alternating Colors

    题目如下: Consider a directed graph, with nodes labelled 0, 1, ..., n-1.  In this graph, each edge is ei ...

  4. 对Moment.js的研究

    创建npm install moment --save-dev 日期格式化 moment().format('MMMM Do YYYY, h:mm:ss a'); // 六月 4日 2019, 6:2 ...

  5. Shell-03

    Shell-03 编程原理 编程介绍 最开始的编程 机械码(16进制)—CPU会识别 计算机只能识别二进制指令 程序 = 指令 + 数据 驱动: 硬件默认是不能使用的 驱动程序----不同的厂家硬件设 ...

  6. ASP.NET的OnClientClick与OnClick事件

    OnClientClick是客户端事件方法.一般采用JavaScript来进行处理.也就是直接在IE端运行.一点击就运行. OnClick事件是服务器端事件处理方法,在服务器端,也就是IIS中运行.点 ...

  7. [CF Round603 Div2 F]Economic Difficulties

    题目:Economic Difficulties 传送门:https://codeforces.com/contest/1263/problem/F 题意:给了两棵tree:Ta(拥有a个节点,节点编 ...

  8. web classpath路径说明

    http://blog.csdn.net/wyswlp/article/details/8886385 http://www.cnblogs.com/Ant-soldier/p/5474085.htm ...

  9. hashcode、equals、HashMap间的关系

    1.从Object说起package com.hallo.collection; public class ObjectDemo { public static void main(String[] ...

  10. React-Native 之 GD (十一)加载更多功能完善 及 跳转详情页

    1.加载更多功能完善 GDHome.js /** * 首页 */ import React, { Component } from 'react'; import { StyleSheet, Text ...