시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
멀티 컴퓨터 시스템은 여러 개의 노드로 이루어져 있으며, 각 노드는 자신의 메모리를 가진다. 노드들은 단방향 통신 링크로 서로 연결되어 있고, 이 상호 접속 네트워크는 방향 그래프로 나타낼 수 있다. 정점은 노드를, 간선은 단방향 링크를 나타낸다.
상호 접속 네트워크에서 가장 중요한 두 구조는 선형 배열과 링이다.
병렬 응용을 지원하기 위해, 전체 시스템을 여러 개의 서브 시스템으로 분해하려고 한다. 각 서브 시스템은 링 또는 선형 배열이어야 하며, 서로 노드를 공유할 수 없다.
k 개의 노드로 이루어진 링의 가치는 k 달러이고, k 개의 노드로 이루어진 선형 배열의 가치는 k−1 달러이다. 따라서 노드가 1개인 선형 배열의 가치는 0 달러이다.
상호 접속 네트워크가 주어졌을 때, 시스템을 링과/또는 선형 배열로 분해하여 얻을 수 있는 가치의 최댓값을 구하는 프로그램을 작성하시오.
예를 들어, 어떤 네트워크를 노드 6개로 이루어진 링과 노드 8개로 이루어진 선형 배열로 분해하면 총 가치는 6+7=13 달러가 되며, 이 값이 가능한 최댓값이 될 수 있다.
첫째 줄에 테스트 케이스의 개수 T 가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 수 n 과 단방향 링크의 수 m 이 주어진다. (n≤1,000, m≤50,000) 노드는 0 번부터 n−1 번까지 번호가 매겨져 있다. 이어지는 m 개의 줄에는 각각 두 정수 u 와 v 가 공백으로 구분되어 주어지며, 이는 노드 u 에서 노드 v 로 향하는 단방향 링크를 나타낸다.
각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. 이 정수는 주어진 상호 접속 네트워크를 링과/또는 선형 배열로 분해했을 때 얻을 수 있는 가치의 최댓값이다.