// 题目来源:POJ 3648
// 题目大意:有n对夫妻参加婚礼,现安排座位,已经某些人不能同时坐在新娘的对面,且夫妻不可同侧,求可行方案
// 解决方法:仍然2-sat建图解决
// 特别注意:新娘到新郎要连边,因为选出的必须是新郎
#include <cstdio>
#include <string>
#define o 100000
#define _ 1000000
using namespace std;
void link( int, int );
void link2( int, int );
void tarjan( int );
void topsort( int );
void dfs( int );
int next[_], next2[_], g[_], g2[_];
int h[o], h2[o], dfn[o], low[o], stack[o], done[o], code[o], color[o], cfl[o], id[o];
int n, m, top, t, t2, tt, index, cnt;
bool ins[o];
bool ok;
int main( )
{
freopen( "3648.in", "r", stdin );
freopen( "3648.out", "w", stdout );
scanf( "%d%d", &n, &m );
int aa, bb;
char ch, ch2;
while( n != 0 )
{
memset( next, 0, sizeof( next ) );
memset( next2, 0, sizeof( next2 ) );
memset( h, 0, sizeof( h ) );
memset( h2, 0, sizeof( h
【代码】POJ 3648
最新推荐文章于 2023-11-19 19:00:00 发布
这是一个使用2-SAT算法解决POJ 3648题目的程序。题目要求在n对夫妻中安排座位,使得某些人不能坐在新娘对面,夫妻不同侧,并找出可行的座位方案。程序通过建图、深度优先搜索和拓扑排序等方法实现求解。
摘要由CSDN通过智能技术生成