만드는 중입니다

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

Nice Report

시간 제한5초메모리 제한512 MB

요약
방향 그래프에서 각 정점이 도달할 수 있는 정점의 수를 실제 값의 두 배 이내 오차로 추정합니다.
난이도

어려움10점 중 8점

유형
그래프, 확률, 위상 정렬
정답자
아직 제출이 없습니다

문제

Andrew는 어떤 소셜 네트워크의 구독 그래프를 분석하고 있다. 이 그래프는 방향 그래프이다. 사용자 aa가 사용자 bb를 구독한다고 해서 사용자 bb가 사용자 aa를 구독하는 것은 아니다.

Andrew의 상사는 각 사용자 xx에 대해, 구독 그래프에서 xx로부터 도달할 수 있는 사용자 yy의 수를 구해 달라고 요청했다.

정확한 값은 필요하지 않다. 값이 복잡하고 곧 쓸모가 없어지기 때문에 Andrew는 근삿값을 원한다. 정답과 비교해 최대 2배까지만 차이 나는 값을 구하라.

입력

첫째 줄에 두 정수 nn과 mm이 주어진다(1≤n,m≤2000001 \le n, m \le 200000). nn은 사용자 수, mm은 구독 관계의 수이다. 다음 mm개의 줄에는 정수 aia_i와 bib_i가 주어진다(1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i). 이는 사용자 aia_i가 사용자 bib_i를 구독한다는 뜻이다. 순서쌍 (ai,bi)(a_i, b_i)는 입력에 최대 한 번 등장한다.

출력

각 사용자 ii에 대해, 사용자 ii로부터 도달할 수 있는 사용자 수의 근삿값 qiq_i를 출력한다. 정답의 개수를 ziz_i라 하자. 모든 사용자에 대해 qi≤2ziq_i \le 2z_i와 zi≤2qiz_i \le 2q_i가 성립하면 정답으로 인정된다. 최대 10명의 사용자에 대해서는 어떤 값을 출력해도 된다.

채점자는 정확한 값으로 답을 확인하지만, 이 문제의 시간 및 메모리 제한 안에서 정확한 값을 구할 수 있다고 보장하지 않는다. 근삿값을 구하기를 권장한다.

예시에서 사용자 1은 다섯 명 모두에게 도달할 수 있다. 답 7은 정답 5와 차이가 2배 이내이므로 허용된다. 마찬가지로 사용자 4에 대한 답 2도 허용된다.

예제1

  1. 예제 1

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