혼잡한 네트워크

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

요약
노드가 40개 이하인 연결 그래프마다 임의의 두 노드 사이에서 서로 다른 간선만 쓰는 경로의 최대 개수를 구한다.
난이도

보통10점 중 7점

유형
그래프, 유니온 파인드, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

양방향 통신이 가능한 연결된 컴퓨터 네트워크가 주어진다. 서로 다른 두 노드 uu와 vv를 골라, 이 둘 사이로 바이러스를 끊임없이 주고받을 때의 혼잡도(congestion)를 최대로 만들고자 한다. 두 노드 uu와 vv 사이의 혼잡도는, 두 노드를 잇는 서로소 간선 경로(edge-disjoint path, 서로 겹치는 간선이 없는 경로)의 최대 개수로 정의한다.

예를 들어 아래 그림의 네트워크에서는 노드 0과 노드 6 사이에, 사용하는 간선이 서로 겹치지 않는 세 개의 경로가 존재한다. 서로 다른 두 경로가 같은 노드(예: 노드 7)를 함께 지나는 것은 허용된다. 다른 어떤 노드 쌍도 이보다 더 높은 혼잡도를 만들 수 없다.

입력

입력은 각각 nn개의 노드를 가진, 연결된 컴퓨터 네트워크들의 수열이다. 노드는 {0,1,…,n−1}\{0, 1, \ldots, n-1\}로 번호가 매겨지며 n≤40n \le 40이다.

각 네트워크의 명세는 다음과 같다. 첫 줄에는 노드의 개수를 나타내는 음이 아닌 정수 nn이 주어진다. 이어서 nn개의 줄이 주어지며, 그중 ii번째 줄에는 노드 i−1i-1의 이웃(0부터 시작하는 번호)들이 공백으로 구분되어 나열된다.

마지막 네트워크 다음에는 n=0n = 0인 네트워크가 주어지며, 이 네트워크는 처리하지 않는다. 네트워크는 최대 2000개까지 주어질 수 있다.

출력

각 입력 네트워크에 대해, 그 네트워크에서 어떤 노드 쌍이 만들 수 있는 최대 혼잡도를 정수 하나로 한 줄에 출력한다.

예제1

  1. 예제 1

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