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

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

tarjan模板打错again致命伤qwq

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N = 103;
  6. const int M = 1003;
  7. bool inst[N << 1];
  8. struct node {int nxt, to;} E[M << 1];
  9. int cnt, point[N << 1], dfn[N << 1], low[N << 1], st[N << 1], top = 0, bel[N << 1];
  10. void ins(int u, int v) {E[++cnt] = (node) {point[u], v}; point[u] = cnt;}
  11. char A[23], B[23];
  12. int n, m, a, b, ct, tot;
  13. void tarjan(int x) {
  14. dfn[x] = low[x] = ++ct;
  15. inst[st[++top] = x] = true;
  16. for (int i = point[x], v = E[i].to; i; v = E[i = E[i].nxt].to)
  17. if (!dfn[v]) tarjan(v), low[x] = min(low[x], low[v]);
  18. else if (inst[v]) low[x] = min(low[x], dfn[v]);
  19. if (dfn[x] == low[x]) {
  20. ++tot;
  21. while (st[top] != x) {
  22. inst[st[top]] = false;
  23. bel[st[top--]] = tot;
  24. }
  25. inst[x] = false;
  26. bel[st[top--]] = tot;
  27. }
  28. }
  29. int main() {
  30. int T; scanf("%d", &T);
  31. while (T--) {
  32. scanf("%d%d", &n, &m);
  33. int doublen = n << 1;
  34. memset(point, 0, sizeof(int) * doublen);
  35. memset(dfn, 0, sizeof(int) * doublen);
  36. ct = cnt = tot = 0;
  37. for (int i = 1; i <= m; ++i) {
  38. scanf("%s%s", A, B);
  39. int lena = strlen(A), lenb = strlen(B);
  40. a = b = 0;
  41. for (int j = 1; j < lena; ++j) a = a * 10 + A[j] - 48;
  42. for (int j = 1; j < lenb; ++j) b = b * 10 + B[j] - 48;
  43. --a; --b;
  44. if (A[0] == 'h') a += n;
  45. if (B[0] == 'h') b += n;
  46. ins((a + n) % doublen, b);
  47. ins((b + n) % doublen, a);
  48. }
  49. for (int i = 0; i < doublen; ++i)
  50. if (!dfn[i])
  51. tarjan(i);
  52. bool flag = false;
  53. for (int i = 0; i < n; ++i)
  54. if (bel[i] == bel[i + n]) {
  55. flag = true;
  56. puts("BAD");
  57. break;
  58. }
  59. if (!flag) puts("GOOD");
  60. }
  61. return 0;
  62. }

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

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

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

  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. hiho一下第134周 1468 : 2-SAT·hihoCoder新春晚会

    1468 : 2-SAT·hihoCoder新春晚会 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder新春晚会正在紧张地筹备中.晚会分为上半场和下半场, ...

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

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

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

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

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

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

随机推荐

  1. DOM操作-遍历HTML文档内容

    基础:   JS nodeType返回类型:http://blog.csdn.net/qyf_5445/article/details/9232907 代码: <!DOCTYPE html> ...

  2. 解决“Xlib.h not found when building graphviz on Mac OS X 10.8”错误

    After installing XQuartz you may add a symlink to your X11 installation folder by just entering (安装X ...

  3. Global事件执行顺序

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  4. 克隆虚拟机系统整个文件快照,然后另起建立该系统,产生的IP地址冲突解决办法

    进入克隆后的文件系统 cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0  ifcfg-eth1 vim ifcfg-eth1   #修改其中的文件内容 ...

  5. 17 个 tar 命令实用示例【转】

    Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归 ...

  6. Inno Setup入门(二)——修改安装过程中的图片

    修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: 其实也可以修改它,只需要在setup段中作一点稍微的修改,加一行代码即可: [setup] AppName=Test ...

  7. android-support-v7-appcompat

    只要把values-v14下的styles.xml修改 用在4.0以上的设备 <!-- Base application theme for API 14+. This theme comple ...

  8. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...

  9. Stack-overflow, how to answer

    How to Answer Welcome to Stack Overflow! Thanks for taking the time to contribute an answer. It's be ...

  10. Spring MVC中前后台数据传输小结

    前台向后台传递参数: @ResponseBody @RequestMapping(value = "/findById/{id}", method = { RequestMetho ...