[백준] 11375번: 열혈강호

2021. 2. 11. 22:28Algorithm/백준

 

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