만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

한 번 남았다

시간 제한2초메모리 제한512 MB

요약
간선 가중치가 1 또는 -1인 방향 그래프에서 음수 사이클이 없는데도 N-2번만 완화한 뒤 한 번 더 확인하는 변형 벨만-포드가 음수 사이클이 있다고 잘못 판정하는 그래프를 만든다. 간선 수를 최소로 하고 사전순으로도 가장 앞서야 한다.
난이도

어려움10점 중 9점

유형
그래프, 최단 경로, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

지구이는 간선의 가중치가 11 또는 −1-1인 방향 그래프에 음수 사이클이 있는지 판정하려고 벨만포드 알고리즘을 다음과 같이 구현했다.

  1. 모든 정점 vv에 대하여 d[v]d[v]를 00으로 초기화한다.
  2. 갱신 한 회차는 입력에 주어진 순서대로 모든 간선 (s,e,w)(s, e, w)를 훑으면서 d[e]d[e]에 min⁡(d[e], d[s]+w)\min(d[e],\ d[s] + w)를 대입하는 것이다. 간선 하나를 처리할 때마다 dd가 곧바로 바뀌고, 같은 회차의 다음 간선은 바뀐 값을 쓴다.
  3. 갱신을 N−2N - 2회 반복한다. 원래대로라면 N−1N - 1회여야 한다.
  4. 갱신을 한 회차 더 했을 때 dd의 값이 하나라도 바뀌면 음수 사이클이 있다고 판정한다.

3번의 반복 횟수를 하나 덜 쓴 탓에, 이 코드는 음수 사이클이 없는 그래프를 보고도 있다고 답한다. 그런 그래프를 직접 만들어서 지구이의 코드가 틀렸음을 보여라.

정점 개수 NN이 주어진다. 정점이 NN개이고 모든 간선의 가중치가 11 또는 −1-1인 방향 그래프 중에서, 음수 사이클이 없지만 위 코드가 음수 사이클이 있다고 판정하는 그래프를 하나 출력한다. 간선을 출력하는 순서가 곧 코드가 간선을 훑는 순서이므로, 순서도 답의 일부다.

조건을 만족하는 그래프는 여러 개다. 그중 간선 개수 MM이 가장 작은 것을 출력하고, 그런 그래프가 여럿이면 출력한 간선을 순서대로 s1,e1,d1,s2,e2,d2,…,sM,eM,dMs_1, e_1, d_1, s_2, e_2, d_2, \dots, s_M, e_M, d_M처럼 늘어놓아 앞에서부터 수를 비교했을 때 사전순으로 가장 앞서는 것을 출력한다.

입력

첫째 줄에 정점 개수 NN이 주어진다. (50≤N≤10050 \le N \le 100)

출력

첫째 줄에 정점 개수 NN과 간선 개수 MM을 출력한다. (0≤M≤N×(N−1)0 \le M \le N \times (N - 1))

둘째 줄부터 MM개의 줄에 각 간선의 시작 정점 ss, 끝 정점 ee, 가중치 dd를 출력한다. (1≤s,e≤N1 \le s, e \le N, s≠es \ne e, d=1d = 1 또는 d=−1d = -1)

같은 (s,e)(s, e) 쌍을 두 번 출력하면 안 된다.

예제2

  1. 예제 1

    입력
    50
    
    예상 출력
    50 49
    1 2 -1
    3 1 -1
    4 3 -1
    5 4 -1
    6 5 -1
    7 6 -1
    8 7 -1
    9 8 -1
    10 9 -1
    11 10 -1
    12 11 -1
    13 12 -1
    14 13 -1
    15 14 -1
    16 15 -1
    17 16 -1
    18 17 -1
    19 18 -1
    20 19 -1
    21 20 -1
    22 21 -1
    23 22 -1
    24 23 -1
    25 24 -1
    26 25 -1
    27 26 -1
    28 27 -1
    29 28 -1
    30 29 -1
    31 30 -1
    32 31 -1
    33 32 -1
    34 33 -1
    35 34 -1
    36 35 -1
    37 36 -1
    38 37 -1
    39 38 -1
    40 39 -1
    41 40 -1
    42 41 -1
    43 42 -1
    44 43 -1
    45 44 -1
    46 45 -1
    47 46 -1
    48 47 -1
    49 48 -1
    50 49 -1
    
  2. 예제 2

    입력
    51
    
    예상 출력
    51 50
    1 2 -1
    3 1 -1
    4 3 -1
    5 4 -1
    6 5 -1
    7 6 -1
    8 7 -1
    9 8 -1
    10 9 -1
    11 10 -1
    12 11 -1
    13 12 -1
    14 13 -1
    15 14 -1
    16 15 -1
    17 16 -1
    18 17 -1
    19 18 -1
    20 19 -1
    21 20 -1
    22 21 -1
    23 22 -1
    24 23 -1
    25 24 -1
    26 25 -1
    27 26 -1
    28 27 -1
    29 28 -1
    30 29 -1
    31 30 -1
    32 31 -1
    33 32 -1
    34 33 -1
    35 34 -1
    36 35 -1
    37 36 -1
    38 37 -1
    39 38 -1
    40 39 -1
    41 40 -1
    42 41 -1
    43 42 -1
    44 43 -1
    45 44 -1
    46 45 -1
    47 46 -1
    48 47 -1
    49 48 -1
    50 49 -1
    51 50 -1