Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52538 | AK2022071323 | 子网 | C++ | 运行出错 | 5 | 1000 MS | 146520 KB | 841 | 2022-07-19 12:43:31 |
#include <bits/stdc++.h> using namespace std; int n,m,k,cnt,a[44],mch[8010],vis[8010],p[8010]; vector <int> v[8010]; bool dfs(int x,int y) { if(vis[x] == y) return false; int siz = v[x].size(); for(int i = 0; i < siz; i++) { if(p[v[x][i]]) continue; if(!mch[v[x][i]] || dfs(v[x][i],y)) { mch[v[x][i]] = x; return true; } } return false; } int main() { scanf("%d%d",&n,&m); for(int i = 1; i <= m; i++) { scanf("%d",&k); for(int j = 1; j <= k; j++) { scanf("%d",&a[j]); for(int t = 1; t < j; t++) { v[a[j]].push_back(a[t]); v[a[t]].push_back(a[j]); } } } for(int i = 1; i <= n; i++) if(!mch[i]) { p[i] = 1; if(dfs(i,i)) cnt++; } printf("%d\n",cnt); return 0; }