최소 사이클 평균

가중치가 있는 단순 방향 그래프에서 모든 단순 방향 사이클의 평균 가중치 중 최솟값을 구해 기약분수로 출력하고, 사이클이 없으면 0 0을 출력한다.

어려움9동적 계획법그래프이분 탐색최단 경로아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

대사 네트워크는 방향 그래프로 모형화한다. 정점은 상태를 나타내고, 간선은 한 상태에서 다른 상태로 넘어가는 전이를 나타낸다. 각 간선에는 그 전이에 드는 비용이나 에너지 같은 가중치가 붙어 있다. 방향 사이클의 평균 가중치는 사이클에 속한 간선의 가중치 합을 간선 개수로 나눈 값이다. 네트워크의 효율은 네트워크 안에 있는 방향 사이클의 평균 가중치 중 최솟값으로 측정한다. 이 최솟값을 구하면 된다.

정확히 말하면 정점이 nn개인 방향 그래프 G=(V,E)G = (V, E)가 주어지고, 모든 간선의 가중치는 양수다. 사이클 CC 위의 정점이 모두 서로 다르면 CC를 단순 사이클이라고 한다. 단순 방향 사이클 CC의 가중치 w(C)w(C)CC에 속한 간선의 가중치 합이고, CC의 평균 가중치는 w(C)/Cw(C)/|C|이다. 여기서 C|C|CC의 간선 개수, 곧 CC의 길이다. GG의 최소 사이클 평균은 GG에 있는 단순 방향 사이클의 평균 가중치 중 최솟값이다. GG는 단순 그래프다. 한 정점에서 자기 자신으로 가는 간선이 없고, 서로 다른 두 정점 uu, vv에 대해 uu에서 vv로 가는 간선은 많아야 하나다. 따라서 GG에 있는 모든 단순 사이클의 길이는 2 이상이다.

그림 1. 정점이 6개, 간선이 9개인 방향 그래프. 정점 a부터 f까지가 번호 0부터 5까지에 대응한다.

그림 1의 방향 그래프에는 단순 방향 사이클이 모두 네 개 있다. b에서 c로, 다시 b로 돌아오는 사이클, a에서 b, c를 거쳐 a로 돌아오는 사이클, b에서 d, e, c를 거쳐 b로 돌아오는 사이클, a에서 b, d, e, c를 거쳐 a로 돌아오는 사이클이고, 길이는 각각 2, 3, 4, 5다. 네 사이클의 가중치는 4, 6, 6, 8이므로 평균 가중치는 4/2=24/2 = 2, 6/3=26/3 = 2, 6/4=1.56/4 = 1.5, 8/5=1.68/5 = 1.6이다. 평균이 가장 작은 사이클은 b에서 d, e, c를 거쳐 b로 돌아오는 사이클이고, 그 평균은 1.51.5다.

단순 방향 그래프 GG의 최소 사이클 평균을 출력하는 프로그램을 작성하라.

입력

첫 줄에 방향 그래프 GG의 정점 개수 nn과 간선 개수 mm이 주어진다(2n1,0002 \le n \le 1{,}000, 1m1051 \le m \le 10^5). 정점의 번호는 00부터 n1n - 1까지 서로 다르다.

다음 mm개 줄에는 간선이 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 uu, vv, ww가 공백 하나로 구분되어 주어지고, 이는 uu에서 vv로 가는 가중치 ww인 간선을 뜻한다(0u,vn10 \le u, v \le n - 1, uvu \ne v, 1w1,0001 \le w \le 1{,}000).

출력

한 줄에 두 정수 aabb를 공백 하나로 구분해 출력한다. aabb는 서로소이고, a/ba/bGG의 최소 사이클 평균이다. 최소 사이클 평균이 정수이면 bb11이다. GG에 사이클이 없으면 0 두 개를 공백 하나로 구분해 출력한다.