http://hihocoder.com/problemset/problem/1467

2-sat模板。。。详细的题解请看题目里的提示。

tarjan模板打错again致命伤qwq

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int N = 103;
const int M = 1003; bool inst[N << 1];
struct node {int nxt, to;} E[M << 1];
int cnt, point[N << 1], dfn[N << 1], low[N << 1], st[N << 1], top = 0, bel[N << 1];
void ins(int u, int v) {E[++cnt] = (node) {point[u], v}; point[u] = cnt;} char A[23], B[23];
int n, m, a, b, ct, tot; void tarjan(int x) {
dfn[x] = low[x] = ++ct;
inst[st[++top] = x] = true;
for (int i = point[x], v = E[i].to; i; v = E[i = E[i].nxt].to)
if (!dfn[v]) tarjan(v), low[x] = min(low[x], low[v]);
else if (inst[v]) low[x] = min(low[x], dfn[v]);
if (dfn[x] == low[x]) {
++tot;
while (st[top] != x) {
inst[st[top]] = false;
bel[st[top--]] = tot;
}
inst[x] = false;
bel[st[top--]] = tot;
}
} int main() {
int T; scanf("%d", &T);
while (T--) {
scanf("%d%d", &n, &m);
int doublen = n << 1;
memset(point, 0, sizeof(int) * doublen);
memset(dfn, 0, sizeof(int) * doublen);
ct = cnt = tot = 0;
for (int i = 1; i <= m; ++i) {
scanf("%s%s", A, B);
int lena = strlen(A), lenb = strlen(B);
a = b = 0;
for (int j = 1; j < lena; ++j) a = a * 10 + A[j] - 48;
for (int j = 1; j < lenb; ++j) b = b * 10 + B[j] - 48;
--a; --b;
if (A[0] == 'h') a += n;
if (B[0] == 'h') b += n;
ins((a + n) % doublen, b);
ins((b + n) % doublen, a);
}
for (int i = 0; i < doublen; ++i)
if (!dfn[i])
tarjan(i);
bool flag = false;
for (int i = 0; i < n; ++i)
if (bel[i] == bel[i + n]) {
flag = true;
puts("BAD");
break;
}
if (!flag) puts("GOOD");
}
return 0;
}

【hihoCoder 第133周】【hihoCoder 1467】2-SAT·hihoCoder音乐节的更多相关文章

  1. 【hihoCoder 第133周】2-SAT·hihoCoder音乐节

    http://hihocoder.com/contest/hiho133/problem/1 2-sat模板...详细的题解请看题目里的提示. tarjan模板打错again致命伤qwq #inclu ...

  2. hihoCoder 第136周 优化延迟(二分答案+手写堆)

    题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...

  3. HihoCoder第三周与POJ2406:KMP算法总结

    HihoCoder第三周: 输入 第一行一个整数N,表示测试数据组数. 接下来的N*2行,每两行表示一个测试数据.在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不 ...

  4. hiho一下第133周 2-SAT·hihoCoder音乐节(2-SAT)(强连通)

    2-SAT·hihoCoder音乐节 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众多嘉宾和知名乐队 ...

  5. hihocoder第42周 3*N骨牌覆盖(状态dp+矩阵快速幂)

    http://hihocoder.com/contest/hiho42/problem/1 给定一个n,问我们3*n的矩阵有多少种覆盖的方法 第41周做的骨牌覆盖是2*n的,状态转移方程是dp[i] ...

  6. hihocoder第42周 k*N骨牌覆盖(状态dp+矩阵快速幂)

    上周的3*N的骨牌,因为状态只有8中,所以我们可以手算出状态转移的矩阵 但是这周是k*N,状态矩阵不好手算,都是我们改成用程序自动生成一个状态转移的矩阵就行了,然后用这个矩阵进行快速幂即可 枚举枚举上 ...

  7. hihocoder第220周-一道拧巴的题

    一.220周 题目链接 问题描述 键盘上有N个数字按键,每个按键只能按一次,每次可以按下多个键,请输出所有可能的按键情况. 输入一个整数N(N在1~8之间),输出全部的按键可能.例如:输入3,输出为 ...

  8. hihocoder(第十周)二叉树(前序中序推后续)递推实现

    题目 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常有意思 ...

  9. HihoCoder第五周:标准动态规划

    这周的题目是最标准最简单的动态规划了,自己一直以来对动态规划都不是很理解,这次也是好好记录一下. 题目1 :数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 ...

随机推荐

  1. 省队集训Day1 睡觉困难综合征

    传送门:https://www.luogu.org/problem/show?pid=3613 [题解] 按二进制位分开,对于每一位,用“起床困难综合征”的方法贪心做. 写棵LCT,维护正反两种权值, ...

  2. [HDU5214]Movie解题报告|小水题大智慧

    Movie Cloud and Miceren like watching movies. Today, they want to choose some wonderful scenes from ...

  3. HDP-2.6.1安装

    1.首先安装HDP的Ambari仓库文件到本机的/etc/yum.repos.d/ambari.repo路径下

  4. bzoj 1854 游戏 二分图匹配 || 并查集

    题目链接 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的 ...

  5. [Leetcode Week12]Unique Paths II

    Unique Paths II 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/unique-paths-ii/description/ Descrip ...

  6. MinnowBoard

    MinnowBoard https://github.com/RafaelRMachado/MinnowBoard https://github.com/RafaelRMachado https:// ...

  7. 安装icephp 记

    下面开始安装: 一:yum 安装 首先需要添加一个yum源. # vi /etc/yum.repos.d/zeroc-ice-amzn.repo写入: [zeroc-ice]name=Ice 5 fo ...

  8. sicily 数据结构 1014. Translation

    Description You have just moved from Waterloo to a big city. The people here speak an incomprehensib ...

  9. 【LabVIEW技巧】你可以不懂OOP,却不能不懂封装

    前言 大多数写LabVIEW程序的工程师都不是一个纯软的工程师,很多做硬件的.做机械的.甚至学化学的也会学习LabVIEW. 由于主要重心不在软件,所以LabVIEW程序基本上能用行,也就得到入门容易 ...

  10. axios使用

    axios 基于promise用于浏览器和node.js的http客户端 特点 支持浏览器和node.js 支持promise 能拦截请求和响应 能转换请求和响应数据 能取消请求 自动转换JSON数据 ...