Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52406 | AK2022071336 | 木板游戏 | C++ | 运行超时 | 0 | 2000 MS | 14396 KB | 1105 | 2022-07-19 12:08:35 |
#include <bits/stdc++.h> using namespace std; const int N = 5e5 + 10; int n, m, k[N], vis[N], ans, in; vector<int>wire[4500]; void dfs(int now) { int flg = 0; for(int i = 1; i <= k[now]; i++) { for(int j = i + 1; j <= k[now]; j++) { if(vis[i] or vis[j]) continue; flg = 1; vis[i] = vis[j] = 1; dfs(now + 1); vis[i] = vis[j] = 0; } } if(!flg) { ans = max(ans, now); } } //void solsub() //{ // for(int i = 1; i <= m; i++) // { // for(int j = 1; j <= k[i]; j++) // { // // } // } //} int main () { scanf("%d%d", &n, &m); int subt = 1; for(int i = 1; i <= m; i++) { scanf("%d", &k[i]); if(k[i] != 2) subt = 0; for(int j = 1; j <= k[i]; j++) { scanf("%d", &in); wire[i].push_back(in); } } // if(subt) // { // solsub(); // return 0; // } dfs(1); printf("%d\n", ans); return 0; }