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;
}

最新文章

  1. October 16th Week 43rd Sunday 2016
  2. test for cvx library in matlab - windows
  3. 谈谈对hibernate的理解
  4. ArcGis 字段计算表达式写法注意事项
  5. svn不知道这样的主机
  6. nil、Nil、NULL和NSNull的区别和联系
  7. js后退一直停留在当前页面或者禁止后退
  8. .Net开源项目之开源论坛
  9. nginx安装 nginx: [emerg] getpwnam(“www”) failed 错误
  10. Tomcat7.0配置
  11. dedecms 常用标签调用
  12. (转)SVN教程总结
  13. Android学习自定义Dialog
  14. codility上的练习 (1)
  15. maven项目发布不成功的问题
  16. 从壹开始前后端 [vue后台] 之二 || 完美实现 JWT 滑动授权刷新
  17. 使用FreeCookies 控制浏览器cookies及修改http响应内容
  18. window.open在ajax里 被浏览器拦截
  19. Java-IO流之输入输出流基础示例
  20. 将网站项目转为 Web form应用程序(转)

热门文章

  1. leetcode404-----简单的树的遍历
  2. RESTful架构1--架构理解
  3. InjectAPC全部项目(Win32和Win64位)
  4. AC Me
  5. webapp前端开发软键盘与position:fixed为我们带来的不便
  6. android 瀑布流效果(仿蘑菇街)
  7. 在Linux服务器上增加硬盘没那么简单【转】
  8. ListView控件的Insert、Edit和Delete功能第三部分(自我总结)
  9. WPF中ListBox控件选择多个数据项
  10. servlet &amp; javabean