【代码】POJ 3648

这是一个使用2-SAT算法解决POJ 3648题目的程序。题目要求在n对夫妻中安排座位,使得某些人不能坐在新娘对面,夫妻不同侧,并找出可行的座位方案。程序通过建图、深度优先搜索和拓扑排序等方法实现求解。
摘要由CSDN通过智能技术生成
// 题目来源: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值