사이클

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

정점이 NN개, 가중치가 있는 간선이 MM개인 방향 그래프가 주어진다.

경로는 두 정점을 잇는 간선의 수열을 의미하고, 사이클은 시작점과 끝점이 같은 경로를 의미한다. 사이클 중에서 단순 사이클은 시작점과 끝점을 제외하고 중복되는 정점이 없는 사이클을 의미한다.

주어진 그래프에서 가중치의 합이 최소가 되도록 모든 정점을 포함하고 정점과 간선이 서로 겹치지 않는 단순 사이클의 집합을 구하는 프로그램을 작성하시오.

입력

다음과 같이 입력이 주어진다.

N MN\ M
u_1u\_1 v_1v\_1 w_1w\_1
\vdots
u_Mu\_M v_Mv\_M w_Mw\_M

  • NN은 정점의 개수이고 MM은 간선의 개수이다. (2 N2002 \le N \le 200, 0MN(N1)0 \le M \le N\left(N-1\right))
  • u_iu\_i v_iv\_i w_iw\_i는 정점 u_iu\_i에서 v_iv\_i로 가는 가중치 w_iw\_i의 간선이 존재한다는 뜻이다. (1u,vN1 \le u, v \le N, uvu \ne v, 109w109-10^9 \le w \le 10^9)

주어진 그래프 내에서 루프는 존재하지 않으며, 서로 다른 두 정점 사이에 최대 한 개의 간선이 존재한다.

출력

모든 정점을 포함하고 정점과 간선이 서로 겹치지 않는 단순 사이클의 집합이 존재하는 경우 첫 번째 줄에 1을 출력한다. 그렇지 않으면 0을 출력한다.

모든 정점을 포함하고 정점과 간선이 서로 겹치지 않는 단순 사이클의 집합이 존재하는 경우, 두 번째 줄에 이러한 집합들의 가중치의 합의 최솟값을 출력하고, 이후 NN개의 줄에 걸쳐서 해당 집합의 단순 사이클에 속한 간선들을 출력한다. 간선들의 출력 순서는 상관없으며, 답이 여러 개인 경우 그 중 아무 것이나 출력하면 된다.