#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. Codeforces 197D - Infinite Maze

    197D - Infinite Maze 思路:bfs,如果一个点被搜到第二次,那么就是符合要求的. 用vis[i][j].x,vis[i][j].y表示i,j(i,j是取模过后的值)这个点第一次被搜 ...

  2. Lua中数组的学习

    --数组的大小是不固定的 --一维数组的逻辑结构是线性表索引从1开始 array1 = {"Lua", "Tutorial"} , do print(array ...

  3. 20170622xlVBA多部门分类汇总同类合并单元格

    Public Sub Basic_CodeFrame() AppSettings On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant ...

  4. HDOJ-1124 Factorial 数论

    题意哇:求N!末尾多少个0. 很容易想到转化为求N!中5因子的个数.但是从数据范围来看必然不可能一个一个算出来. 所以这里借用数论的一个知识. 如果p是素数,那么n!中p因子的个数可以表示为1-n中整 ...

  5. Connected Components? CodeForces - 920E (bfs)

    大意:给定无向图, 求补图的连通块数 bfs模拟即可, 这里用了map存图, set维护未划分的点集, 复杂度$O(nlog^2n)$, 用链表的话可以$O(n)$ #include <iost ...

  6. vijos 1423 最短路or环(有向图)

    最佳路线 描述 年久失修的赛道令国际汽联十分不满.汽联命令主办方立即对赛道进行调整,否则将取消其主办权.主办方当然必须马上开始行动. 赛道测评人员经过了三天三夜的数据采集,选出了若干可以使用的道路和各 ...

  7. Android studio jni

    首先我们要明确几个概念,jni,ndk,共享库(.so). jni是java native interface的缩写,java 本地接口.它提供了若干的API实现了Java和其他语言的通信(主要是C/ ...

  8. Leetcode 113

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  9. kill word out 1

    1● de 使~~ 成为 :离开 ,去掉,向下,变慢   2● dif 不,分开 ,否定,离开     3● deci 十分之一   4● deca 向下,离开   5● deca 十   6● di ...

  10. cas 服务端认证流程

    CAS服务端流程分析 'CAS单点登录服务器端的登录流程' -----流程的配置在/WEB-INF/login-webflow.xml文件中 <var name="credential ...