본문 바로가기

그래프 이론57

[백준] 21940번 : 가운데에서 만나기 (C++) 21940번 : 가운데에서 만나기 문제) 준형이는 내일 친구들을 만나기로 했다. 준형이와 친구들은 서로 다른 도시에 살고 있다. 도시를 연결하는 도로는 일방 통행만 있어서 도시 Ai에서 도시 Bi로 가는 시간과 도시 Bi에서 도시 Ai로 가는 시간이 다를 수 있다. 준형이와 친구들은 아래 조건을 만족하는 도시 X를 선택하여 거기서 만나려고 한다. 왕복시간은 자신이 살고 있는 도시에서 도시 X로 이동하는 시간과 도시 X에서 다시 자신이 살고 있는 도시로 이동하는 시간을 합한 것이다. 준형이와 친구들이 도로를 이용하여 갈 수 있는 도시만 선택한다. 준형이와 친구들의 왕복시간 들 중 최대가 최소가 되는 도시 X를 선택한다. 준형이와 친구들이 이동할 수 있는 도시가 최소한 하나 이상이 있음을 보장한다. 도시가 .. 2023. 10. 23.
[백준] 15723번 : n단 논법 (C++) 15723번 : n단 논법 문제) 모든 중앙대 컴퓨터공학부(소프트웨어학부) 학생들은 미인이다. 지무근은 중앙대 컴퓨터공학부 학생이다. 그러므로 지무근은 미인이다. 위 연역 논증은 대표적인 삼단논법의 예시이다. 삼단논법이란 전제 두 개와 결론 하나로 이루어진 연역 논증이다. 이것을 응용하면, n개의 전제가 있을 때 m개의 결론을 도출할 수 있을 것이다. 이때의 n과 m은 모든 의미에서 적절한 수라고 가정하자. 자세한 것은 입출력 예시를 확인하자. 입력 : 첫째 줄에 정수 n(2 ≤ n ≤ 26)이 주어진다. 둘째 줄부터 n개의 줄에 걸쳐 각 줄에 전제가 하나씩 주어진다. 전제는 모두 a is b의 형식으로 주어지며 a와 b는 서로 다른 임의의 알파벳 소문자이다. 특별한 명시는 없지만 모든 전제는 “모든 a.. 2023. 10. 19.
[백준] 1956번 : 운동 (C++) 1956번 : 운동 문제) V개의 마을와 E개의 도로로 구성되어 있는 도시가 있다. 도로는 마을과 마을 사이에 놓여 있으며, 일방 통행 도로이다. 마을에는 편의상 1번부터 V번까지 번호가 매겨져 있다고 하자. 당신은 도로를 따라 운동을 하기 위한 경로를 찾으려고 한다. 운동을 한 후에는 다시 시작점으로 돌아오는 것이 좋기 때문에, 우리는 사이클을 찾기를 원한다. 단, 당신은 운동을 매우 귀찮아하므로, 사이클을 이루는 도로의 길이의 합이 최소가 되도록 찾으려고 한다. 도로의 정보가 주어졌을 때, 도로의 길이의 합이 가장 작은 사이클을 찾는 프로그램을 작성하시오. 두 마을을 왕복하는 경우도 사이클에 포함됨에 주의한다. 입력 : 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 .. 2023. 10. 16.
[백준] 17396번 : 백도어 (C++) 17396번 : 백도어 문제) 유섭이는 무척이나 게으르다. 오늘도 할 일을 모두 미뤄둔 채 열심히 롤을 하던 유섭이는 오늘까지 문제를 내야 한다는 사실을 깨달았다. 그러나 게임은 시작되었고 지는 걸 무척이나 싫어하는 유섭이는 어쩔 수 없이 백도어를 해 게임을 최대한 빠르게 끝내기로 결심하였다. 최대한 빨리 게임을 끝내고 문제를 출제해야 하기 때문에 유섭이는 최대한 빨리 넥서스가 있는 곳으로 달려가려고 한다. 유섭이의 챔피언은 총 N개의 분기점에 위치할 수 있다. 0번째 분기점은 현재 유섭이의 챔피언이 있는 곳을, N-1 번째 분기점은 상대편 넥서스를 의미하며 나머지 1, 2, ..., N-2번째 분기점은 중간 거점들이다. 그러나 유섭이의 챔피언이 모든 분기점을 지나칠 수 있는 것은 아니다. 백도어의 핵심.. 2023. 10. 10.