#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=;
int g[N][N];
int r[N][N];//模型图
int c[N];// 染的颜色
int num[N][]; int snt; // 联通分量
int s[N]; //每个点所属联通分量
bool dp[N][N];// 前i个联通分量能否组成为J人的一组
int ans[N][N];// 前i个联通分量组成为J人的一组的选择(选择0一组还是1一组)
int n;
bool flag ;
void dfs (int rt) {
for (int i=;i<=n;i++) {
if (r[rt][i]) {
if (c[i]==-) {
c[i]=c[rt]^;
num[snt][c[i]]++;
s[i]=snt;
dfs (i);
if (flag) return ;
}
if (c[i]==c[rt]) {flag=; return;}
}
}
return ;
}
int main ()
{
ios::sync_with_stdio(false);
cin>>n;
for (int i=;i<=n;i++) {
int x;
while (cin>>x&&x) g[i][x]=;
}
for (int i=;i<=n;i++)
for (int j=;j<=n;j++) {
if (j!=i&&g[j][i]==)
r[i][j]=r[j][i]=;(//不相互认识的人建立无向边,这两个人一定在不同的分组,(0,1)染色问题)
}
memset (c,-,sizeof (c));
for (int i=;i<=n;i++) {
if (c[i]==-) {
c[i]=;
num[++snt][]++;
s[i]=snt;
dfs (i);
if (flag) {
cout<<"No solution"<<endl;
break;
}
}
}
if (!flag) {
dp[][]=;
for (int i=;i<=snt;i++)
for (int j=n/;j>=;j--) {
if (j>=num[i][]&&dp[i-][j-num[i][]])
{dp[i][j]=; ans[i][j]=;}
if (j>=num[i][]&&dp[i-][j-num[i][]])
{dp[i][j]=; ans[i][j]=;}
}
int t1;
for (int i=n/;i>=;i--)
if (dp[snt][i]) {t1=i;break;}
int _n=t1; int _s=snt;
while (_s) {
for (int i=;i<=n;i++)
if (s[i]==_s&&c[i]==ans[_s][_n]) c[i]=-;
_n-=num[_s][ans[_s][_n]];
_s--;
}
cout<<n-t1;
for (int i=;i<=n;i++)
if (c[i]>=) cout<<" "<<i;
cout<<endl;
cout<<t1;
for (int i=;i<=n;i++)
if (c[i]<) cout<<" "<<i;
cout<<endl; }
return ;
}

poj-1112 (二分图染色+dp分组)的更多相关文章

  1. POJ 1015 Jury Compromise dp分组

    第一次做dp分组的问题,百度的~~ http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑 ...

  2. 【POJ 1112】Team Them Up!(二分图染色+DP)

    Description Your task is to divide a number of persons into two teams, in such a way, that: everyone ...

  3. NOIP2008双栈排序[二分图染色|栈|DP]

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  4. 【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)

    圆桌会议必须满足:奇数个人参与,相邻的不能是敌人(敌人关系是无向边). 求无论如何都不能参加会议的骑士个数.只需求哪些骑士是可以参加的. 我们求原图的补图:只要不是敌人的两个人就连边. 在补图的一个奇 ...

  5. POJ 2942Knights of the Round Table(tarjan求点双+二分图染色)

    Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 13954   Accepted: 4673 Description Bein ...

  6. POJ2942 Knights of the Round Table【Tarjan点双联通分量】【二分图染色】【补图】

    LINK 题目大意 有一群人,其中有一些人之间有矛盾,现在要求选出一些人形成一个环,这个环要满足如下条件: 1.人数大于1 2.总人数是奇数 3.有矛盾的人不能相邻 问有多少人不能和任何人形成任何的环 ...

  7. Relation(NOIP模拟赛)(二分图染色)

    原题: Description 有n个人,编号为1àn,告诉你那些人之间是不友好的.现在,让你将这n个人分成两组,使得每一组之内的人是互相友好的,如果可以分成两组,则输出如何分组的,如果不可以分成两组 ...

  8. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  9. 洛谷P1330封锁阳光大学[二分图染色]

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

随机推荐

  1. Bate冲刺四——《WAP团队》

    β冲刺第四天  1. 今日完成任务情况以及遇到的问题. ①马麒.杜有海:记录功能完善情况 ②郝明宇:记录验收情况 ③马宏伟.周欣:后台前端数据连接 ④乌勒扎:综合测试 2.成员时间贡献   成员 马宏 ...

  2. java日期获取前一天和后一天

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...

  3. Android蓝牙通信功能开发

    1. 概述 Bluetooth 是几乎现在每部手机标准配备的功能,多用于耳机 mic 等设备与手机的连接,除此之外,还可以多部手机之间建立 bluetooth 通信,本文就通过 SDK 中带的一个聊天 ...

  4. ubuntu下xx-net可用IP为0, ping6显示 Network is unreachable

    不知和xx-net有没有关系. 全新安装系统 sudo apt-get install miredo 这时, ping6 ipv6.google.com 是能ping通的 按github上依次安装py ...

  5. PHP面向对象初中高级之由浅入深

    php面向对象编程基本实践:(了解类,类到对象的实例化,构造和析构,对象的引用); 类的概念: 物以类聚,把具有相似特性的对象对垒到一个类中 类定义了这些相似对象拥有的相同的属性和方法 类是相似对象的 ...

  6. (转)sublime text3 3176激活

    更改hosts:sudo vim /private/etc/hosts 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 激活 ...

  7. poj2417 Discrete Logging BSGS裸题

    给a^x == b (mod c)求满足的最小正整数x, 用BSGS求,令m=ceil(sqrt(m)),x=im-j,那么a^(im)=ba^j%p;, 我们先枚举j求出所有的ba^j%p,1< ...

  8. C语言-简单选择排序与直接插入排序的实现

    /* Name: selectSort and insertSort Copyright: nyist Author: 润青 Date: 01/10/18 19:30 Description: 实现了 ...

  9. vs2015如何设置类或函数前不显示引用的数量

    这几天,从vs2012换成vs2015,感觉15版本增加了一个类或函数前提示引用的数量,这个感觉很别扭,如何取消显示这个呢? 问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> ...

  10. ASE加解密算法详细介绍

    AEC扫盲主要增对CBC模式做详细讲解: https://blog.csdn.net/qq_28205153/article/details/55798628 AEC其他几种模式详细介绍 https: ...