Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MySQL
- AWS
- 조합 알고리즘
- BOJ 2213
- spring security
- DP
- BOJ 4948
- 플로이드 와샬
- 분할과 정복
- serverless
- BOJ 1926
- BOJ 5791
- BOJ 1912
- BOJ 6593
- BOJ 4485
- BOJ 2146
- Lambda
- 다익스트라
- BOJ 2012
- springboot
- BOJ 2234
- priority_queue
- javascript
- Coercion
- BOJ 1074
- BOJ 2407
- BOJ 1697
- BOJ 5568
- BOJ 2167
- BOJ 11726
Archives
- Today
- Total
고인물을 지양하는 블로그
BOJ 1613 역사 본문
https://www.acmicpc.net/problem/1613
전후관계를 나타내기 위해 방향그래프를 이용했다.
- A 사건이 B사건에 우선하면 A->B라 표기
다시 문제로 돌아가면, 사건들의 전 후 관계가 주어졌을 때 다음과 같은 질의들이 주어진다.
- A C
- C B
앞에 있는 사건이 우선해서 일어났으면 -1, 뒤에 있는 사건이 우선해서 일어났으면 1, 주어진 전후관계로 질의의 전후관계를 파악할 수 없으면 0을 출력한다.
문제 접근
전후관계와 관계 판단만을 보고 위상정렬을 이용한 문제라 생각하고 접근했지만, 위상정렬의 경우에는 정렬의 순서가 구현에 따라 여러가지
e.g
A B C D
A C B D
와 같이 나타날 수 있는데,
위의 경우 모두 위상정렬의 결과가 될 수 있어 B -> C인가? 라는 질의에 정확히 답하기 어렵다. (위상정렬을 1회 수행한 경우)
시간이 좀 걸리긴 했지만, 이 문제를 모든 정점에서 모든 정점의 최단거리 문제로 본다면, B -> C인가? 라는 질의가 주여졌을 때 B에서 C로의 최단거리가 존재하면 B에서 C 순서로 사건이 이루어졌다 볼 수 있다.
*문제에서 '물론 사건의 전후 관계가 모순인 경우는 없다.' 명시
플로이드 와샬을 이용하면 해결할 수 있는 문제였다.
'Algorithms > ACMICPC(백준)' 카테고리의 다른 글
BOJ 1074 Z (0) | 2020.03.22 |
---|---|
BOJ 2407 조합 (0) | 2020.01.02 |
BOJ 9663 N_Queen (0) | 2019.09.12 |
BOJ 2211 네트워크 복구 (0) | 2019.09.04 |
BOJ 2213 트리의 독립집합 (0) | 2019.08.14 |
Comments