아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

증권 중개인 소문망

면접 대비

시간 제한1초메모리 제한128 MB

요약
방향 가중 그래프마다 모든 정점에 도달하는 시작 정점 중 최장 최단 거리가 가장 작은 정점과 그 시간을 출력하고, 불가능하면 disjoint를 출력한다.
난이도

보통10점 중 5점

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

문제

증권 중개인들은 소문에 과민하게 반응하는 것으로 유명하다. 당신은 고용주가 주식 시장에서 전술적 우위를 얻을 수 있도록, 증권 중개인 집단에 거짓 정보를 퍼뜨리는 일을 맡았다. 효과를 극대화하려면 소문을 가능한 한 빠르게 퍼뜨려야 한다.

각 중개인은 자신의 연락 상대에게서 온 정보만 신뢰하므로, 누가 누구와 연락하는지의 구조가 중요하다. 한 중개인이 특정 상대에게 소문을 전달하는 데에는 정해진 시간(분)이 걸리며, 이 전달 시간은 방향성을 가진다. 즉 A가 B에게 전달하는 시간과 B가 A에게 전달하는 시간이 다를 수 있고, 한쪽 방향으로만 전달이 가능할 수도 있다.

각 집단에 대해, 소문을 가장 먼저 알려 줄 중개인을 정하고, 그 경우 소문이 모두에게 도달하기까지 걸리는 시간을 구하는 프로그램을 작성하라. 이 시간은 마지막 사람이 정보를 받는 시점으로 측정한다.

입력

입력은 여러 개의 집단으로 이루어진다.

각 집단은 정수 NN 하나가 적힌 줄로 시작한다. NN은 증권 중개인의 수이며 1≤N≤1001 \le N \le 100이다. 중개인은 11번부터 NN번까지 번호가 매겨진다.

이어지는 NN개의 줄은 각 중개인의 연락 관계를 순서대로 나타낸다. 한 중개인의 줄은 정수 cc(0≤c≤N−10 \le c \le N-1), 즉 그 사람이 소문을 전달할 수 있는 상대의 수로 시작하고, 그 뒤에 cc개의 정수 쌍이 온다. 각 쌍은 상대의 번호와, 그 상대에게 소문을 전달하는 데 걸리는 시간(분, 1≤t≤101 \le t \le 10)을 차례로 나타낸다.

입력은 첫 줄이 00인 집단으로 끝나며, 이 종료용 집단은 처리하지 않는다.

출력

각 집단에 대해 한 줄을 출력한다.

어떤 중개인에게서 시작했을 때 소문이 결국 다른 모든 중개인에게 도달할 수 있다면, 가장 좋은 시작 중개인의 번호와 공백, 그리고 마지막 사람이 소문을 받을 때까지 걸리는 시간(정수 분)을 출력한다. 이 시간이 최소가 되는 시작 중개인을 선택하며, 최소 시간이 같은 시작 중개인이 여럿이면 그중 번호가 가장 작은 사람을 출력한다.

어떤 중개인에게서 시작하더라도 집단 전체에 소문을 전달할 수 없다면(누가 시작하든 도달할 수 없는 사람이 있다면), 대신 disjoint를 출력한다.

예제1

  1. 예제 1

    입력
    3
    2 2 4 3 5
    2 1 2 3 6
    2 1 2 2 2
    5
    3 4 4 2 8 5 3
    1 5 8
    4 1 6 4 10 2 7 5 2
    0
    2 2 5 1 5
    0
    
    예상 출력
    3 2
    3 10