clock   2년 전

https://www.acmicpc.net/source... (정답 코드라 제출번호로 첨부합니다)

일단 aMatch와 bMatch를 match 벡터 하나로 통일했는데, 그 이유는 두 구역 i와 j를 매칭하면 aMatch와 bMatch 둘 다 i와 j에 각각 j와 i를 매칭해야하기 때문에 둘이 같아져서 match 하나로 진행했습니다.

dfs는

1. 매칭된 적이 없으면서 방문한 적도 없을 때

2. match[to]부터 다시 dfs를 돌아서 전부 매칭됐을 때

두 가지 조건문을 분리시켰습니다.

1번 같은 경우에는 아래 테스트케이스에서 (연결 리스트에는 왼쪽, 오른쪽, 다른 줄 순서로 들어가있습니다)왼쪽 1과 오른쪽 1이 매칭된 후 2를 매칭하려 할 때, 오른쪽 1이 2와 매칭되려 하는걸 막기 위해 visited[to]를 한 번 더 확인했습니다.

일반 이분매칭으로는 안풀리길래 바꿔봤는데 혹시 이게 다른 알고리즘이었다던가 하는게 있을까요? 이분매칭으로 풀었다고 말하고 다닐 수 있을까요?

aig0016   2년 전

저도 초라기 첫 솔브를 글쓴이님과 비슷한 발상으로 해결했는데요, 이분 매칭으로 풀었다...라고 하기에는 초라기의 입력으로 만들어지는 그래프가 이분 그래프가 아닙니다.

따라서 이분 매칭으로 풀었다고 말할 수는 없고, dfs 알고리즘 혹은 매칭 알고리즘으로 풀었다고는 할 수 있을 것 같습니다.

clock   1년 전

aig0016님을 포함해 백준 내외에서 답변해주신 분들 전부 감사드립니다.

aig0016님과 여러 분들의 의견을 듣고 "이분 그래프가 아니므로 이분 매칭이 아니다" 라는 결론이 나왔습니다.

만약 이 글과 제 코드를 보셨다면 이분매칭에서 이런 아이디어를 받을 수 있겠구나 싶은 정도에서만 참고하시면 좋을 것 같습니다.

댓글을 작성하려면 로그인해야 합니다.