51nod 马拉松30 C(构二分图+状压dp)

题意

分析

  考虑一个图能被若干简单环覆盖,那么一定是每个点恰好一个出度,恰好一个出度

  于是类似最小路径覆盖的处理,我们可以把每个点拆成2个点i和i',如果有一条边(i,j),那么将i和j'连起来

  那么问题就等价于求这个二分图的完美匹配的个数

  求完美匹配个数是个np问题,但这里n<=20,很容易想到用状压dp做

  dp[i][s]表示左边前i个点都匹配了,右边的点匹配情况是s的时候的方案数

 

posted @ 2017-11-02 21:41  Chellyutaha  阅读(206)  评论(0编辑  收藏  举报