/* 백준 11376번. 이분 매칭 이용. 각각의 직원이 최대 두개의 일을 할 수 있다는 점에서 두번씩 DFS를 수행해주면 됨. 어떤 것을 먼저 매칭하던지 최종 매칭 숫자가 동일하므로 단순히 DFS를 두번만 수행하면 됨. */ /* 첫째 줄에 직원의 수 N과 일의 개수 M이 주어진다. (1 ≤ N, M ≤ 1,000) 둘째 줄부터 N개의 줄의 i번째 줄에는 i번 직원이 할 수 있는 일의 개수와 할 수 있는 일의 번호가 주어진다. */ #include #include #define MAX 1001 using namespace std; vector a[MAX]; int d[MAX]; int c[MAX]; int n, m; bool dfs(int x) { for (int i = 0; i < a[x].size(..
Algorithm/Algorithm_PS 검색 결과
/* 백준 11375번. 이분 매칭 이용. 기초적인 이분 매칭 문제. 축사배정과 입력받는 방식만 다를 뿐 동일하게 DFS를 이용하여 해결. */ /* 첫째 줄에 직원의 수 N과 일의 개수 M이 주어진다. (1 ≤ N, M ≤ 1,000) 둘째 줄부터 N개의 줄의 i번째 줄에는 i번 직원이 할 수 있는 일의 개수와 할 수 있는 일의 번호가 주어진다. */ #include #include #define MAX 1001 using namespace std; vector a[MAX]; int d[MAX]; bool c[MAX]; int n, m; //직원 ,해야할 일. bool dfs(int x) { for (int i = 0; i < a[x].size(); i++) { int t = a[x][i]; if (c..
/* 백준 2188번. 이분 매칭 이용. 가장 기초적인 형태의 이분 매칭 문제. DFS를 이용해서 계속 매칭이 가능한 경우를 재귀적으로 매칭시켜 문제 해결. */ /* 첫째 줄에 소의 수 N과 축사의 수 M이 주어진다. (1 ≤ N, M ≤ 200) 둘째 줄부터 N개의 줄에는 각 소가 들어가기 원하는 축사에 대한 정보가 주어진다. i번째 소가 들어가기 원하는 축사의 수 Si (0 ≤ Si ≤ M)이 먼저 주어지고, 이후 Si개의 축사 번호가 주어진다. 같은 축사 번호가 두 번 이상 주어지는 경우는 없다. */ #include #include #define MAX 201 using namespace std; vector a[MAX]; int d[MAX]; bool c[MAX]; //현재 확인한 노드인지 정..