티스토리 뷰

반응형

✏️문제 링크

https://www.acmicpc.net/problem/1298

 

1298번: 노트북의 주인을 찾아서

어느 날 모든 학생들은 한 명이 한개의 노트북을 가지고 공부하던 도중, 자리를 바꾸다가 그만 노트북이 뒤섞이고 말았다. 대다수의 학생들은 자신의 노트북을 잘 알고 있어서 자신의 노트북을

www.acmicpc.net

 

✏️문제 설명

 

 

✏️문제 풀이

기본적인 이분 매칭 알고리즘을 구현하는 문제입니다.

https://pooreumjung.tistory.com/338

 

Algorithm 공부 #26 - 이분 매칭(Binary Matching)

Algorithm 공부 #26 - 이분 매칭 ✏️이분 매칭이란? 이분 그래프에서 주로 사용하는 알고리즘 이분 그래프는 두 개의 정점 그룹이 존재할 때 모든 간선의 용량이 1이면서 양쪽 정점이 서로 다른 그

pooreumjung.tistory.com

 

✏️문제 코드

#include<iostream>
#include<vector>
using namespace std;
#define MAX 101

int N, M;
vector<int>graph[MAX];
int node[MAX];
bool visit[MAX];
bool dfs(int person);
int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> N >> M;
	for (int i = 0; i < M; i++) {
		int per, com;
		cin >> per >> com;
		graph[per].push_back(com);
	}

	int count = 0;
	for (int i = 1; i <= N; i++) {
		fill(visit, visit + MAX, false);
		if (dfs(i))
			count++;
	}
	cout << count;
}

bool dfs(int person)
{
	for (int i = 0; i < graph[person].size(); i++) {
		int com = graph[person][i];
		if (visit[com])
			continue;
		visit[com] = true;
		if (node[com] == 0 || dfs(node[com])) {
			node[com] = person;
			return true;
		}
	}
	return false;
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함