#include<stdio.h> #include<vector> #include<algorithm> using namespace std; int n, m, rev[1000]; bool ck[2000]; vector<int> adj[1000]; bool dfs(int h) { if (ck[h]) return false; ck[h] = true; for (auto t : adj[h / 2]) { if (rev[t] == -1 || dfs(rev[t])) { rev[t] = h; return true; } } return false; } int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { int k, a; scanf("%d", &k); while (k--) { scanf("%d", &a); adj[i].push_back(a - 1); } } int res = 0; fill(rev, rev + m, -1); for (int i = 0; i < 2 * n; i++) { fill(ck, ck + 2 * n, false); if (dfs(i)) res++; } printf("%d", res); return 0; }
11376번: 열혈강호 2
https://www.acmicpc.net/problem/11376
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기