hdu5971—Wrestling Match(二分图染色+并查集)

hdu5971—Wrestling Match(二分图染色+并查集)_第1张图片

 

hdu5971—Wrestling Match(二分图染色+并查集)_第2张图片

题意:

就是有n个人,m场PK,每一场PK都保证了一个是good,一个是bad,然后给了X个已经知道的好人的编号和Y个已经知道的坏人的编号。然后问能否分成两个阵营。

看样例:

给的PK能将1,2,4,5分成两大块,但是2何去何从是未知的,所以是NO。

下一个,2是good,所以能分成两大块。

思路:

1.利用染色的方法,看能否给已知的图进行染色,不成功说明矛盾输出no。

2.如果可以染色,还要判断给定的X个是否在同一个集合里。

如果在同一个连通分量里我才判断。否则没有影响。

也可以用种类并查集做。

比赛的时候写了个假的二分染色。好伤心啊。。嘤嘤嘤。。。

具体看代码:

#include
using namespace std;
const int MAXN=20010;
 vector graph[MAXN];
int color[MAXN];
int VIS[MAXN];
bool DFS(int u)
{
    int len=graph[u].size();
    for(int j=0;j

 

你可能感兴趣的:(图论,各类板子,图论——二分图匹配)