만드는 중입니다

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

섬 투어

면접 대비

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

요약
각 섬의 나가는 간선이 최대 하나인 방향 그래프에서, 한 섬에서 출발해 같은 섬을 두 번 방문하지 않고 갈 수 있는 섬의 최대 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

섬들은 집라인으로 연결되어 있다. 관광객은 집라인을 타고 한 섬에서 다른 섬으로 이동할 수 있다. 해 질 녘 바다 위를 달리는 집라인에서는 햇빛이 비치는 바다 위로 반짝이는 불빛과 숨이 멎을 듯한 자연 경관을 볼 수 있다. 이 섬들은 관광객에게 인기 있는 명소다. 섬마다 여러 색깔의 꽃이 가득하다. Optimizer라는 관광객은 임의의 섬에서 출발하여 가능한 한 많은 서로 다른 섬을 방문하려고 한다.

섬들은 방향 그래프 G(V,E)G(V, E)로 나타낸다. 섬 vv에서 다른 섬 ww로 가는 집라인은 방향 간선 (v,w)∈E(v, w) \in E로 나타낸다. 각 섬에서 나가는 집라인은 최대 한 개다. 즉, 모든 정점 v∈Vv \in V에 대해 나가는 간선은 최대 하나이다.

예를 들어 아래 그림은 섬들을 방향 그래프로 나타낸 것이다.

아래 그래프의 점선 경로는 가능한 한 많은 서로 다른 섬을 방문하는 가장 긴 여행을 나타낸다.

집라인으로 연결된 섬들을 나타내는 방향 그래프 G(V,E)G(V, E)가 주어졌을 때, Optimizer가 방문할 수 있는 섬의 최대 개수를 구하는 프로그램을 작성하라. Optimizer는 임의의 섬에서 출발할 수 있으며, 같은 섬을 두 번 이상 방문할 수 없다.

입력

프로그램은 표준 입력에서 읽는다. 첫 줄에는 두 정수 mm과 nn (0≤m≤n≤1 000 0000 \le m \le n \le 1\,000\,000)이 주어진다. 여기서 mm은 집라인 연결(간선)의 수이고, nn은 섬(정점)의 수이다. 섬은 00부터 n−1n - 1까지 번호가 매겨진다. 이후 mm개의 줄에서 ii번째 줄에는 방향 간선 (vi,wi)(v_i, w_i)를 나타내는 두 정수 viv_i와 wiw_i가 주어진다. 각 정점에서 나가는 간선은 최대 하나이다.

출력

프로그램은 표준 출력에 쓴다. 출력은 한 줄이며, 임의의 섬에서 집라인을 타고 출발하여 방문할 수 있는 서로 다른 섬의 최대 개수를 출력한다.

예제4

  1. 예제 1

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

    입력
    3 4
    0 1
    1 2
    2 0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    2 2
    1 0
    0 1
    
    예상 출력
    2
    
  4. 예제 4

    입력
    0 4
    
    예상 출력
    1