※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 13317번 문제인 한 번 남았다이다.
문제는 아래 링크를 확인하자.

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

 

13317번: 한 번 남았다

최단경로 알고리즘은 Dijkstra 알고리즘밖에 모르는 지구이는 어느 날 간선의 가중치가 1과 –1만 존재하는 그래프에서 음수 사이클의 존재 여부를 구하는 문제를 보게 되었다. 지구이는 Dijkstra 알

www.acmicpc.net

지문에 적혀있듯 주어진 코드는 "음수 사이클이 없음에도 (음수 사이클이) 있다고 판별하기 때문에 틀"린 코드이다.

 

Bellman-Ford의 반복문을 N-1바퀴 돌아야 최단거리를 구할 수 있는 케이스는 무엇일까?

 

반복문을 한 바퀴 돌면 (최단거리에 해당하는 경로의 탐색이 끝나지 않은 이상) 적어도 하나의 새로운 노드의 거리가 갱신이 되게 되므로, N-1번 최단거리가 갱신되기 위해서는 모든 노드를 전부 거쳐가는 경로가 최단거리가 되어야 한다.

 

그런 경우중 가장 단순한 경우는 N-1개의 노드가 일렬로 이어진 일자트리 모양 그래프이므로 글쓴이는 이러한 모양의 그래프를 답으로 구하였다.

 

이를 주어진 출력형식에 맞춰 만들어 출력해주자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cout << 50 << ' ' << 49 << '\n';
	for (int i = 49; i > 0; i--) cout << i << ' ' << i + 1 << ' ' << -1 << '\n';
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 13271 // C++] 스파이  (0) 2021.12.17
[BOJ 6002 // C++] Job Hunt  (0) 2021.12.16
[BOJ 3860 // C++] 할로윈 묘지  (0) 2021.12.14
[BOJ 1738 // C++] 골목길  (0) 2021.12.13
[BOJ 7577 // C++] 탐사  (0) 2021.12.12

+ Recent posts