1 条题解

  • 1
    @ 2022-7-6 21:29:42

    这不图论+贪心吗……

    dfs水一下就对了√

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 155;
    bool choose[N], ans[N], G[N][N];
    int v[N], cnt, n, m, x, y;
    void dfs(int pos, int sum) {
    	if (sum > cnt) cnt = sum, memcpy(ans, choose, sizeof choose);
    	for (int i = pos + 1; i <= n; i ++)
    		if (!v[i] && !choose[i]) {
    			for (int j = 1; j <= n; j ++)
    				if (G[i][j]) v[j] ++;
    			choose[i] = true, dfs(i, sum + 1), choose[i] = false;
    			for (int j = 1; j <= n; j ++)
    				if (G[i][j]) v[j] --;
    		}
    }
    int main() {
    	cin >> n >> m;
    	for (int i = 1; i <= m; i ++)
    		cin >> x >> y, G[x][y] = G[y][x] = true;
    	dfs(0, 0, 11451419198102333qwq);
    	cout << cnt << '\n';
    	for (int i = 1; i <= n; i ++)
    		cout << ans[i] << ' ';
    	return 0;
    }
    
  • 1

信息

ID
137
时间
1000ms
内存
256MiB
难度
5
标签
(无)
递交数
75
已通过
27
上传者