LuoguP7859 [COCI2015-2016#2] GEPPETTO 题解

Content

\(n\) 个数 \(1\sim n\)。你需要在其中选若干个数。但是还有 \(m\) 个限制,第 \(i\) 个限制格式为 \(a_i\) 不能和 \(b_i\) 一起选。问你一共有多少种选法。

数据范围:\(1\leqslant n\leqslant 20\)\(1\leqslant m\leqslant 400\)\(1\leqslant a_i,b_i\leqslant n\)\(a_i\neq b_i\)

Solution

不多说,上来直接暴搜。枚举所有可能的 \(2^n\) 种情况,然后一个一个限制判断是否合法统计答案即可。理论上来说复杂度为 \(\mathcal O(2^n m)\),但是由于很多种选法都没法枚举到 \(m\) 种,因此实际复杂度远远达不到这么高。

Code

namespace Solution {
    int n, m, ans, a[407], b[407], in[27];

    iv dfs(int x) {
        if(x > n) {
            int fl = 1;
            F(int, i, 1, m) if(in[a[i]] && in[b[i]]) {fl = 0; break;}
            ans += fl; return;
        }
        in[x] = 1, dfs(x + 1), in[x] = 0, dfs(x + 1);
    }

    iv Main() {
        read(n, m);
        F(int, i, 1, m) read(a[i], b[i]);
        dfs(1), write(ans);
    }
}
posted @ 2021-12-15 21:23  Eason_AC  阅读(62)  评论(0)    收藏  举报