만드는 중입니다

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

철도 유지보수

면접 대비

시간 제한40초메모리 제한1024 MB

요약
노선을 하나씩 뺐을 때 두 역 사이의 이동이 끊기는 노선의 개수를 구합니다.
난이도

보통10점 중 5점

유형
그래프, DFS
정답자
아직 제출이 없습니다

문제

당신은 철도 네트워크의 유지보수를 맡고 있다. 네트워크에는 NN개의 역과 LL개의 노선이 있다. 각 노선은 정해진 역 목록을 양방향으로 운행한다(열차는 목록의 첫 역과 마지막 역에서 방향을 바꾼다). 역에서는 노선을 갈아탈 수 있다. 역 aa에서 역 bb로 가는 이동이 가능하다는 것은, 첫 노선이 aa를 지나고 마지막 노선이 bb를 지나며, 목록에서 이웃한 두 노선이 항상 공통으로 지나는 역을 적어도 하나 가진 노선 목록이 존재한다는 뜻이다.

노선을 한 번에 하나씩 운휴하는 것이 가장 간단한 보수 방법이다. 어떤 노선을 제거했을 때 적어도 한 쌍의 역 사이 이동이 불가능해지면, 그 노선은 필수 노선이다.

주어진 노선들 중 필수 노선이 몇 개인지 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 역의 수 NN과 노선의 수 LL을 담은 줄로 시작한다.

이어서 LL개의 묶음이 주어지며, 각 묶음은 두 줄을 차지한다. ii번째 묶음의 첫 줄에는 ii번째 노선이 지나는 역의 수 KiK_i가 주어진다. 둘째 줄에는 그 노선이 지나는 역 KiK_i개의 번호 Si,1,Si,2,…,Si,KiS_{i,1}, S_{i,2}, \dots, S_{i,K_i}가 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 필수 노선의 수이다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 모든 ii에 대해 2≤Ki≤N2 \le K_i \le N.
  • 모든 i,ji, j에 대해 1≤Si,j≤N1 \le S_{i,j} \le N.
  • j≠j′j \ne j'인 모든 i,j,j′i, j, j'에 대해 Si,j≠Si,j′S_{i,j} \ne S_{i,j'}. 각 노선은 같은 역을 두 번 지나지 않는다.
  • 어떤 노선도 운휴하지 않았을 때, 모든 역 쌍 사이의 이동이 가능하다.

힌트

예제 케이스 #1에서 첫 번째 노선은 2번 역을 지나는 유일한 노선이므로 필수 노선이다. 다른 노선을 운휴해도 적어도 한 쌍의 역 사이 이동이 불가능해지지 않으므로, 그 노선들은 필수가 아니다.

예제 케이스 #2에는 필수 노선이 없다.

예제 케이스 #3은 예제 케이스 #2와 비슷하지만 마지막 노선이 빠져 있다. 그래서 남은 노선이 모두 필수가 된다.

예제 케이스 #4에서는 마지막 노선이 없으면 1번 역에서 4번 역으로 갈 방법이 없으므로, 마지막 노선이 필수다. 예제 케이스 #1과 마찬가지로 이 노선은 이미 모든 역을 연결하고 있어서 다른 노선은 필수가 아니다.

예제1

  1. 예제 1

    입력
    4
    4 3
    3
    1 2 3
    2
    1 4
    3
    4 1 3
    4 4
    2
    1 2
    2
    3 4
    2
    3 2
    2
    4 1
    4 3
    2
    1 2
    2
    3 4
    2
    3 2
    4 3
    2
    1 2
    2
    3 4
    4
    4 1 2 3
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 3
    Case #4: 1