hiho一下第133周 2-SAT·hihoCoder音乐节(2-SAT)(强连通)
2-SAT·hihoCoder音乐节
描述
hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众多嘉宾和知名乐队参与演出。
音乐会分为上午、下午两场进行,主办方指定了n首歌让乐队进行演唱。每首歌只会被演唱一次,要么在上午要么在下午。
参加音乐会的嘉宾们对于歌曲的演唱时间有一些要求。具体来说,每位嘉宾会指定两首歌曲的演唱时间(上午或者下午)。如果最后实际的演出安排中,两首歌都没有达到嘉宾的要求,那么嘉宾就会对音乐节不滿意。如嘉宾A的要求是上午《我的滑板鞋》和下午《忐忑》,而最后的演出中上午没有《我的滑板鞋》只有《忐忑》,下午没有《忐忑》只有《我的滑板鞋》,那么嘉宾A是不满意的。
音乐节主办方自然希望使所有嘉宾满意,但主办方后来发现有可能不存在一种歌曲的安排方案满足所有嘉宾,所以他们希望你判断一下这种情况是否会发生。
输入
输入第一行包含一个数字 K,代表K组数据。(K≤50)
对于每一组数据,第一行包含两个非负整数n和m(n≤100,m≤1000),代表有n首歌和m位嘉宾。
为了方便我们给予歌编号,编号分别从1 到n。接下的m行,每行都代表对应的嘉宾的喜好由一个英文字母(m或h)跟一个数字代表,如m1 代表这个评审喜欢第1首歌上午进行,而h2代表这个评审员喜欢第2首歌下午进行。
输出
对于每一组数据,输出一行,如果能满足所有嘉宾的情况,输出GOOD;否则输出BAD。
- 样例输入
-
2
3 4
m3 h1
m1 m2
h1 h3
h3 m2
2 4
h1 m2
m2 m1
h1 h2
m1 h2 - 样例输出
-
GOOD
BAD#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <time.h>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
using namespace std;
const int N=2e3+;
const int M=N*N+;
int n,m,k,s,t,tot,cut=,tim=,top=;
int head[N],vis[N];
int dfn[N],low[N],stack1[N],num[N];
struct man {
int to,next;
} edg[M];
void add(int u,int v) {
//printf("!!!%d %d\n",u,v);
edg[tot].to=v;
edg[tot].next=head[u];
head[u]=tot++;
}
void Tarjan(int u) {
int v;
low[u] = dfn[u] = ++tim;
stack1[top++] = u;
vis[u] = ;
for(int e = head[u]; e != -; e = edg[e].next) {
v = edg[e].to;
if(!dfn[v]) {
Tarjan(v);
low[u] = min(low[u], low[v]);
} else if(vis[v]) {
low[u] = min(low[u], dfn[v]);
}
}
if(low[u] == dfn[u]) {
cut++;
do {
v = stack1[--top];
num[v] = cut;
vis[v] = ;
} while(u != v);
}
}
void init(){
tot=top=cut=tim=;
met(head,-);
met(low,);
met(dfn,);met(vis,);met(num,);
}
int main() {
int t,A,B;
char a,b;
scanf("%d",&t);
while(t--){
init();
bool ok=true;
scanf("%d%d",&n,&m);
while(m--){
scanf(" %c%d %c%d",&a,&A,&b,&B);
int An=A+n;
int Bn=B+n;
if(a=='h')swap(A,An);
if(b=='h')swap(B,Bn);
add(An,B);add(Bn,A);
}
for(int i=;i<=*n;i++)if(!dfn[i])Tarjan(i);
for(int i=;i<=n;i++){
if(num[i]==num[i+n]){
ok=false;
break;
}
}
if(ok)puts("GOOD");
else puts("BAD");
}
return ;
}
hiho一下第133周 2-SAT·hihoCoder音乐节(2-SAT)(强连通)的更多相关文章
- 【hihoCoder 第133周】2-SAT·hihoCoder音乐节
http://hihocoder.com/contest/hiho133/problem/1 2-sat模板...详细的题解请看题目里的提示. tarjan模板打错again致命伤qwq #inclu ...
- 【hihoCoder 第133周】【hihoCoder 1467】2-SAT·hihoCoder音乐节
http://hihocoder.com/problemset/problem/1467 2-sat模板...详细的题解请看题目里的提示. tarjan模板打错again致命伤qwq #include ...
- hiho一下第134周 1468 : 2-SAT·hihoCoder新春晚会
1468 : 2-SAT·hihoCoder新春晚会 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder新春晚会正在紧张地筹备中.晚会分为上半场和下半场, ...
- hiho一下 第115周:网络流一•Ford-Fulkerson算法 (Edmond-Karp,Dinic,SAP)
来看一道最大流模板水题,借这道题来学习一下最大流的几个算法. 分别用Edmond-Karp,Dinic ,SAP来实现最大流算法. 从运行结过来看明显SAP+当前弧优化+gap优化速度最快. hi ...
- 圆内,求离圆心最远的整数点 hiho一下第111周 Farthest Point
// 圆内,求离圆心最远的整数点 hiho一下第111周 Farthest Point // 思路:直接暴力绝对T // 先确定x范围,每个x范围内,离圆心最远的点一定是y轴两端的点.枚举x的范围,再 ...
- hihoCoder 1467 2-SAT·hihoCoder音乐节(2-SAT模版)
#1467 : 2-SAT·hihoCoder音乐节 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众 ...
- 2-SAT·hihoCoder音乐节
2-SAT·hihoCoder音乐节 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众多嘉宾和知名乐队 ...
- hihocoder 1334 - Word Construction - [hiho一下第170周][状态压缩+DFS]
题目链接:https://hihocoder.com/problemset/problem/1334 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given N wo ...
- 【hiho一下第77周】递归-减而治之 (MS面试题:Koch Snowflake)
本题是一道微软面试题,看起来复杂,解出来会发现其实是一个很简单的递归问题,但是这道题的递归思路是很值得我们反复推敲的. 原题为hihocoder第77周的题目. 描述 Koch Snowflake i ...
随机推荐
- SQLite3中dos命令下退出"...>"状态的方法
今天在看Android中SQLite,跟着书上一步一步走,在dos中敲命令时候不小心敲错了,命令行就会突然变成”…>”这样的,本来是”sqlite>”的,然后接下来后面的就没办法在继续操作 ...
- Oracle数据库存量数据抽取使用spool控制命令
spool是oracle sqlplus提供的一个控制命令.可以利用spool和select语句的组合动态生成一些失去了脚本或者一些数据. 1.spool作用: 在sqlplus中用来保存或打印查询 ...
- HDU 3111 Sudoku ( Dancing Links 精确覆盖模型 )
推荐两篇学DLX的博文: http://bbs.9ria.com/thread-130295-1-1.html(这篇对DLX的工作过程演示的很详细) http://yzmduncan.iteye.co ...
- MySQL之优化总结
http://www.cnblogs.com/benshan/archive/2012/07/27/2612212.html MySQL之优化总结 今天,数据库的操作越来越成为整个应用的性能瓶颈 ...
- 【bzoj5047】空间传送装置 堆优化Dijkstra
题目描述 n个点e条边的有向图,每条边是m种类型之一.第i种类型在第x时刻通过所花费的时间为$(a_i*x+b_i)\mod c_i+d_i$.可以在某个点停留.问:在s时刻从1号点出发,到达每个点所 ...
- [洛谷P3857][TJOI2008]彩灯
题目大意:有$n$盏灯,$m$个开关($n,m\leqslant 50$),每个开关可以控制的灯用一串$OX$串表示,$O$表示可以控制(即按一下,灯的状态改变),$X$表示不可以控制,问有多少种灯的 ...
- 洛谷 P2606 [ZJOI2010]排列计数 解题报告
P2606 [ZJOI2010]排列计数 题目描述 称一个\(1,2,...,N\)的排列\(P_1,P_2...,P_n\)是\(Magic\)的,当且仅当对所以的\(2<=i<=N\) ...
- 洛谷 P3765 总统选举 解题报告
P3765 总统选举 题目背景 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任.作 ...
- windows 系统下git 的安装
在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...
- Angular(二)
<!DOCTYPE html> <html lang="en" ng-app='myApp'> <head> <meta charset= ...