[백준] 11375번: 열혈강호
2021. 2. 11. 22:28ㆍAlgorithm/백준
11375번: 열혈강호
강호네 회사에는 직원이 N명이 있고, 해야할 일이 M개가 있다. 직원은 1번부터 N번까지 번호가 매겨져 있고, 일은 1번부터 M번까지 번호가 매겨져 있다. 각 직원은 한 개의 일만 할 수 있고, 각각
www.acmicpc.net
#include<iostream>
#include<vector>
#define MAX 1001
using namespace std;
int d[MAX];
bool c[MAX];
vector<int>w[MAX];
bool dfs(int x) {
//연결된 모든 노드에 대해서 들어갈시도
for (int i = 0;i < w[x].size();i++) {
int y = w[x][i];
//이미 처리한 노드는 볼 필요 없다
if (c[y]) continue;
c[y] = true;
//현재 아무도 일을 하지 않았거나 그 일을 선택한 사람이 다른 일을 선택할수있는경우
if (d[y] == 0 || dfs(d[y])) {
d[y] = x;
return true;
}
}
return false;
}
int main() {
int n, m;
int work, num,cnt=0;
cin >> n >> m;
for (int i = 1;i <= n;i++) {
cin >> work;
for (int j = 1;j <= work;j++) {
cin >> num;
w[i].push_back(num);
}
}
for (int i = 1;i <= n;i++) {
fill(c, c + MAX, false);
if (dfs(i)) cnt++;
}
cout << cnt;
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 2188번: 축사 배정 (0) | 2021.02.13 |
---|---|
[백준]9576번 : 책 나눠주기 (0) | 2021.02.13 |
[백준] 12852번: 1로 만들기 2 (0) | 2021.02.11 |
[백준] 11659번: 구간 합 구하기 4 (0) | 2021.02.11 |
[백준] 11727번: 2*n 타일링 2 (0) | 2021.02.11 |