POJ PKU 2723 2-SAT之五
(2010-08-02 00:13:34)
标签:
pojpku27232-satit |
分类: 图论 |
poj 六道2-sat第五题:
题目描述:
有2n把钥匙,分成2组,给你每组的钥匙信息,并且每组的钥匙只能用一个。
有m个门,每个门有2个锁,只要打开一个锁这个门就开了。(顺序遇见m个门)
问你最多能够打开多少个门。
解题报告:
2n个钥匙,定义4n个节点,1~2n中的i表示用第i个钥匙。 2n+1~4n中的j, 表示不用j - 2n号钥匙。
那么对与给你的n组钥匙的每一组a和b。
有边<a, b + 2n> 和 <b, a + 2n>(只能选一个钥匙)
对于给你的m个门的两个锁a和b
有边<a + 2n, b> <b + 2n, a> 至少选一个。
然后枚举1~m个门,看看最后能到第几个门能够满足条件(数据比较少,不用二分也能过)
代码如下(没用二分):
#include<iostream>
#include<cmath>
using namespace std;
#define size 6000
int n, m, v[size], cnt, ee[size][2];
struct edge{int to, next;} e[1000000];
void insert(int from, int to)
{
}
int belong[size], num[size], cntnum;
int dfn[size], low[size], index, instack[size], sta[size],
top;
void tarjan(int id)
{
}
int main()
{