POJ - 3207 Ikki's Story IV - Panda's Trick(2-SAT)
来源:互联网 发布:如何看java源码 编辑:程序博客网 时间:2024/06/01 10:08
题目大意:有一个圈,圈上面按顺时针摆满了1-N,现在有M条连线(两点连线,连线可以为曲线,可以在圈内连线,也可在圈外连线),问这些连线是否相交
解题思路:判断相交的话,只需要判断线的区间是否相交即可
#include <cstdio>#include <cstring>#include <vector>using namespace std;#define M 1010struct link{ int x, y;}L[M];int n, m, top;int S[M];bool mark[M];vector<int> G[M];void AddEdge(int x, int valx, int y, int valy) { x = x * 2 + valx; y = y * 2 + valy; G[x].push_back(y);}void init() { for (int i = 0; i < m; i++) { scanf("%d%d", &L[i].x, &L[i].y); if (L[i].x > L[i].y) { L[i].x = L[i].y ^ L[i].x; L[i].y = L[i].y ^ L[i].x; L[i].x = L[i].y ^ L[i].x; } } for (int i = 0; i < 2 * m; i++) G[i].clear(); for (int i = 0; i < m; i++) for (int j = i + 1; j < m; j++) { if ((L[i].x < L[j].x && L[i].y < L[j].y && L[i].y > L[j].x) || (L[i].x > L[j].x && L[i].y > L[j].y && L[i].x < L[j].y)) { AddEdge(i, 0, j, 1); AddEdge(i, 1, j, 0); AddEdge(j, 0, i, 1); AddEdge(j, 1, i, 0); } }}bool dfs(int u) { if (mark[u ^ 1]) return false; if (mark[u]) return true; mark[u] = true; S[++top] = u; for (int i = 0; i < G[u].size(); i++) if (!dfs(G[u][i])) return false; return true;}void solve() { memset(mark, 0, sizeof(mark)); for (int i = 0; i < 2 * m; i += 2) { top = 0; if (!dfs(i)) { while (top) mark[S[top--]] = false; if (!dfs(i ^ 1)) { printf("the evil panda is lying again\n"); return ; } } } printf("panda is telling the truth...\n");}int main() { scanf("%d%d", &n, &m); init(); solve(); return 0;}
0 0
- poj Ikki's Story IV - Panda's Trick (2-sat)
- POJ--3207[Ikki's Story IV - Panda's Trick] 第一道2—SAT
- POJ 3207 Ikki's Story IV - Panda's Trick 2-sat
- poj 3207 Ikki's Story IV - Panda's Trick 2-sat+建图
- poj 3207 Ikki's Story IV - Panda's Trick#2-sat
- poj 3207 Ikki's Story IV - Panda's Trick 2-sat+建图
- POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT)
- poj 3207 Ikki's Story IV - Panda's Trick(2-sat简单应用)
- poj 3207 Ikki's Story IV - Panda's Trick(2-sat)
- POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT判定)
- POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT)
- POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT判断)
- POJ 3207 - Ikki's Story IV - Panda's Trick 构图2-sat
- POJ 3207 Ikki's Story IV - Panda's Trick 2-SAT
- POJ 3207 Ikki's Story IV - Panda's Trick (2-sat,4级)
- 2-sat->poj 3207 Ikki's Story IV - Panda's Trick
- 2-sat 问题学习小记 Poj 3207 Ikki's Story IV - Panda's Trick (可行性判定)
- [poj 3207] Ikki\'s Story IV - Panda\'s Trick(2-sat or 并查集)
- Linux从入门到精通(一):硬盘安装Ubuntu15.04与win7双系统
- jQuery的noConflict()的作用
- 更新svn时强制写注释
- Leetcode#6||Zigzag Conversion
- pytesseract Windows Error 6
- POJ - 3207 Ikki's Story IV - Panda's Trick(2-SAT)
- 干货分享:PHPCMS V9 删除链接URL中的域名
- Andorid屏幕分辨率划分规则 dpi
- 《机器学习实战》k最近邻算法(K-Nearest Neighbor,Python实现)
- Failed to load JavaHL Library解决方法
- android 下拉刷新的layout,继承后只需要关注不同状态时headerView的变化
- oc和swift混编 (整理的链接)
- MOOC:计算机科学及Python编程导论
- jQuery 实现点击空白关闭目标元素的实现方法