Construct a Graph
시간 제한1초메모리 제한1024 MB
모든 정점 쌍의 거리 행렬이 주어질 때, 그 거리를 그대로 만족하는 무방향 가중 그래프가 존재하는지 판별하고, 존재하면 간선 가중치 합이 최소인 그래프를 출력한다.
문제
크기의 행렬 가 있다. 당신은 정점이 개이고 아래 조건들을 만족하는 무방향 연결 그래프를 구성해야 한다. 각 정점은 부터 까지 번호가 매겨져 있으며, 각 간선에는 양의 정수 가중치를 원하는 대로 부여할 수 있다.
- 모든 정점 쌍 에 대해, 와 사이의 최단 경로의 길이는 이다.
- 모든 간선의 가중치의 합은 가능한 최소여야 한다.
조건을 만족하는 그래프가 존재하는지 판별하고, 있다면 그 중 아무거나 하나를 출력하라.
입력
첫 번째 줄에 정점의 개수를 나타내는 정수 이 주어진다.
다음 개 줄 중 번째 줄에는 개의 정수 이 공백으로 구분되어 주어진다.
출력
문제의 조건을 만족하는 그래프가 존재하지 않는다면, 을 출력한다.
조건을 만족하는 그래프가 존재한다면,
- 첫 번째 줄에 간선의 개수를 나타내는 정수 을 출력한다.
- 다음 개 줄 중 번째 줄에 세 정수 , , 를 공백으로 구분하여 출력한다. 이것은 번 간선이 두 정점 와 를 잇고 가중치가 라는 것을 나타낸다.
- 같은 쌍의 정점을 연결하는 간선은 최대 하나여야 하고, 각 간선의 가중치는 이하여야 한다.
제한
- ()
- ()
- ()
- ()
- ()
- 같은 쌍의 정점을 연결하는 간선은 최대 하나여야 한다.