思路:
1.本题数据是单向边,说明是有向图,但是其实分析题目,要求是互相认识,
则单向边需要处理成无边,即有向图处理成无向图。
2.求补集。
然后求极大联通分量,在同一个连通分量里的两个人都是互相不认识。
在不同连通分量里的两个人互相认识。
3.
用dfs求联通分量,同时01染色,相邻的点颜色不同。
因为在同一个连通分量里的人都互相不认识,
即我们应该将这个联通分量里的人染色成二分图(x,y),以便于分配到不同的队伍里。
(染色成二分图是为了使之满足题意的两个队伍之间人数最close)。
4.判定no solution情况
二分图xy里,x或者y组里的任意两个人如果在补集里面有边,
则输出"No solution"。(我的理解是无法染色)
原因是这时没办法分成两个队伍,起码要三个队伍。
举例是三个人。 A---B---C----A.形成一个环。则无法染色。A 0 B 1 C 0 A 1(矛盾)。
5.
DP(01背包DP).
上面说的只是对于一个连通分量的处理。
现在 需要用DP思想处理每个连通分量。
关于DP,接触的题目不多,这道题的DP就纠结了。
暂且到这吧。
参考自:
http://hi.baidu.com/z917912363/blog/item/fa54b21f1a21f8c3ac6e755e.html