Eliminate the Conflict HDU - 4115(2-sat 建图 hhh)
题意:
石头剪刀布 分别为1、2、3,有n轮,给出了小A这n轮出什么,然后m行,每行三个数a b k,如果k为0 表示小B必须在第a轮和第b轮的策略一样,如果k为1 表示小B在第a轮和第b轮的策略不一样,如果又一轮小B输了,那整个就输了,求小B能否战胜小A
解析:
写出来矛盾的情况 建图就好啦
可能我建的麻烦了。。。不过。。我喜欢 hhhhh
- #include <iostream>
- #include <cstdio>
- #include <sstream>
- #include <cstring>
- #include <map>
- #include <cctype>
- #include <set>
- #include <vector>
- #include <stack>
- #include <queue>
- #include <algorithm>
- #include <cmath>
- #include <bitset>
- #define rap(i, a, n) for(int i=a; i<=n; i++)
- #define rep(i, a, n) for(int i=a; i<n; i++)
- #define lap(i, a, n) for(int i=n; i>=a; i--)
- #define lep(i, a, n) for(int i=n; i>a; i--)
- #define rd(a) scanf("%d", &a)
- #define rlld(a) scanf("%lld", &a)
- #define rc(a) scanf("%c", &a)
- #define rs(a) scanf("%s", a)
- #define pd(a) printf("%d\n", a);
- #define plld(a) printf("%lld\n", a);
- #define pc(a) printf("%c\n", a);
- #define ps(a) printf("%s\n", a);
- #define MOD 2018
- #define LL long long
- #define ULL unsigned long long
- #define Pair pair<int, int>
- #define mem(a, b) memset(a, b, sizeof(a))
- #define _ ios_base::sync_with_stdio(0),cin.tie(0)
- //freopen("1.txt", "r", stdin);
- using namespace std;
- const int maxn = 1e5 + , INF = 0x7fffffff, LL_INF = 0x7fffffffffffffff;
- int n, m;
- int a[maxn];
- vector<int> G[maxn];
- int sccno[maxn], vis[maxn], low[maxn], scc_clock, scc_cnt;
- stack<int> S;
- void init()
- {
- mem(sccno, );
- mem(vis, );
- mem(low, );
- scc_clock = scc_cnt = ;
- for(int i = ; i < maxn; i++) G[i].clear();
- }
- void dfs(int u)
- {
- low[u] = vis[u] = ++scc_clock;
- S.push(u);
- for(int i = ; i < G[u].size(); i++)
- {
- int v = G[u][i];
- if(!vis[v])
- {
- dfs(v);
- low[u] = min(low[u], low[v]);
- }
- else if(!sccno[v])
- {
- low[u] = min(low[u], vis[v]);
- }
- }
- if(low[u] == vis[u])
- {
- scc_cnt++;
- for(;;)
- {
- int x = S.top(); S.pop();
- sccno[x] = scc_cnt;
- if(x == u) break;
- }
- }
- }
- bool check()
- {
- for(int i = ; i < n * ; i += )
- if(sccno[i] == sccno[i + ])
- {
- return false;
- }
- return true;
- }
- int main()
- {
- int T, kase = ;
- cin >> T;
- while(T--)
- {
- init();
- int u, v, w;
- cin >> n >> m;
- for(int i = ; i < n; i++)
- cin >> a[i];
- for(int i = ; i <= m; i++)
- {
- cin >> u >> v >> w;
- u--, v--;
- int x = a[u], y = a[v];
- if(w == )
- {
- if(x == y)
- {
- G[u << ].push_back(v << | );
- G[v << | ].push_back(u << );
- G[u << | ].push_back(v << );
- G[v << ].push_back(u << | );
- }
- else if(x != y)
- {
- if(x == && y == || y == && x == )
- {
- if(y == && x == )
- swap(u, v);
- G[u << | ].push_back(v << | ), G[v << ].push_back(u << );
- }
- else if(x == && y == || y == && x == )
- {
- if(y == && x == )
- swap(u, v);
- G[v << | ].push_back(u << | ), G[u << ].push_back(v << );
- }
- else if(x == && y == || x == && y == )
- {
- if(x == && y == )
- swap(u, v);
- G[u << | ].push_back(v << | ), G[v << ].push_back(u << );
- }
- }
- }
- else
- {
- if(x == y)
- {
- G[u << ].push_back(v << ), G[u << | ].push_back(v << | );
- G[v << ].push_back(u << ), G[v << | ].push_back(u << | );
- }
- else
- {
- if(x == && y == || x == && y == )
- {
- if(x == && y == ) swap(u, v);
- G[u << | ].push_back(v << ), G[v << ].push_back(u << | );
- G[u << ].push_back(u << | ), G[v << | ].push_back(v << );
- }
- else if(x == && y == || x == && y == )
- {
- if(x == && y == ) swap(u, v);
- G[u << ].push_back(v << | ), G[v << | ].push_back(u << );
- G[u << | ].push_back(u << ), G[v << ].push_back(v << | );
- }
- else if(x == && y == || y == && x == )
- {
- if(y == && x == ) swap(u, v);
- G[u << | ].push_back(v << ), G[v << ].push_back(u << | );
- G[u << ].push_back(u << | ), G[v << | ].push_back(v << );
- }
- }
- }
- }
- for(int i = ; i < n * ; i++)
- if(!vis[i]) dfs(i);
- printf("Case #%d: ", ++kase);
- if(check())
- {
- cout << "yes" << endl;
- }
- else cout << "no" << endl;
- }
- return ;
- }
Eliminate the Conflict HDU - 4115(2-sat 建图 hhh)的更多相关文章
- Meeting HDU - 5521 虚点建图
Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farmer John ...
- HDU 4292 Food (建图思维 + 最大流)
(点击此处查看原题) 题目分析 题意:某个餐馆出售f种食物,d种饮料,其中,第i种食物有fi份,第i种饮料有di份:此时有n个人来餐馆吃饭,这n个人必须有一份食物和一份饮料才会留下来吃饭,否则,他将离 ...
- 逃生 HDU 4857(反向建图 + 拓扑排序)
逃生 链接 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必 ...
- hdu 4115 (2—SAT)
题意:两个人石头剪刀布,一个人的出法已确定,另一个人的出法有一定约束,某两次要相同或者不同,问你第二个人能否全部都不失败. 思路:根据Bob出的情况,我们可以确定每次Alice有两种方案. R与P,S ...
- hdu 4568 Hunter bfs建图+TSP状压DP
想AC的人请跳过这一段... 题目应该都能读懂.但是个人觉得这题出的很烂,意思太模糊了. 首先,进出次数只能是一次!!这个居然在题目中没有明确说明,让我在当时看到题目的时候无从下手. 因为我想到了这几 ...
- HDU 4115 Eliminate the Conflict(2-sat)
HDU 4115 Eliminate the Conflict pid=4115">题目链接 题意:Alice和Bob这对狗男女在玩剪刀石头布.已知Bob每轮要出什么,然后Bob给Al ...
- hdu 4115 Eliminate the Conflict ( 2-sat )
Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDU 4115 Eliminate the Conflict(2-SAT)(2011 Asia ChengDu Regional Contest)
Problem Description Conflicts are everywhere in the world, from the young to the elderly, from famil ...
- 图论--2-SAT--HDU/HDOJ 4115 Eliminate the Conflict
Problem Description Conflicts are everywhere in the world, from the young to the elderly, from famil ...
随机推荐
- Final Destination II -- 矩阵快速幂模板题
求f[n]=f[n-1]+f[n-2]+f[n-3] 我们知道 f[n] f[n-1] f[n-2] f[n-1] f[n-2] f[n-3] 1 1 ...
- Linux—vim常用命令
vim常用命令: 1. 键入i进入编辑模式2. esc进入命令模式3. a,进入编辑模式3. b,光标移动到单词前,end,光标移动到行尾4. home光标移动到行首5. cc,删除当前行,并进入编辑 ...
- redis的应用场景 为什么用redis
一.不是万能的菲关系系数据库redis 在面试的时候,常被问比较下Redis与Memcache的优缺点,个人觉得这二者并不适合一起比较,redis:是非关系型数据库不仅可以做缓存还能干其它事情,Mem ...
- 软件工程(FZU2015) 赛季得分榜,第七回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- PAT L2-007 家庭房产
https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 给定每个人的家庭成员和其自己名下的房产,请你 ...
- CRM系统设计方案
CRM系统设计方案 - 百度文库https://wenku.baidu.com/view/a34eebeb0242a8956bece473.html 服务支持http://www.uf-crm.com ...
- Pseudo Registers
Pseudoregister Description @ERR Last error value; the same value returned by the GetLastError() API ...
- 简述nginx(1)
Nginx能做什么 1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分离) 4.正向代理 反向代理 反向代理应该是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理 ...
- php常用方法
在日常开发中,经常我们使用系统方法或者是自己封装的方法进行项目的开发.再此总结一下!!! 一.对于字符串截取 1.使用mbstring扩展 (注意编码的设置) mb_substr($str,2,5, ...
- vue 短信验证
直接贴代码: HTML <div class="phone"> <div class="number"> <p class=&qu ...