-
[1574] 룩 어택BOJ 2022. 1. 1. 04:44
https://www.acmicpc.net/problem/1574
1574번: 룩 어택
첫째 줄에 체스판의 크기 R과 C가 주어지고, 빈 칸의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 빈 칸의 좌표가 주어진다. 좌표는 (행, 열)의 형태로 주어지고, 가장 윗 행은 1번 행이고, 가장 왼
www.acmicpc.net
<문제>
board[i][j]가 빈칸이 아니라면, i->j를 연결해준다.
이분 그래프중 한쪽은 행이고 한쪽을 열로 두었을때 최대매칭수를 찾으면 그것이 곧 답이되겠다.
<소스코드>
1234567891011121314151617181920212223242526272829303132333435363738394041#include <bits/stdc++.h>using namespace std;int n, m, k, d[303];bool check[303];int board[303][303];vector<int> adj[303];bool f(int cur) {for (auto& next : adj[cur]) {if (check[next] == true) continue;check[next] = true;if (d[next] == 0 || f(d[next]) == true) {d[next] = cur;return true;}}return false;}int main(void) {int i, j;cin >> n >> m >> k;for (i = 0; i < k; i++) {int A, B;cin >> A >> B;board[A][B] = -1;}for (i = 1; i <= n; i++) {for (j = 1; j <= m; j++) {if (board[i][j] != -1) {adj[i].push_back(j);}}}int ans = 0;for (i = 1; i <= n; i++) {memset(check, 0, sizeof(check));if (f(i) == true) ans++;}cout << ans;return 0;}cs 'BOJ' 카테고리의 다른 글
[5014] 스타트링크 (0) 2022.01.02 [17070] 파이프 옮기기 1 (0) 2022.01.02 [18138] 리유나는 세일러복을 좋아해 (0) 2021.12.31 [1071] 소트 (0) 2021.12.31 [12904] A와 B (0) 2021.12.30