만드는 중입니다

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

수도

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

요약
양의 실수 도로 길이를 정해 각 도로의 A_i가 B_i보다 수도 S에서 가깝거나 같도록 만들 수 있는 수도 후보 S를 모두 구합니다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 완전 탐색
정답자
아직 제출이 없습니다

문제

NN개의 도시가 MM개의 도로로 연결되어 있다. 도시는 1번부터 NN번까지, 도로는 1번부터 MM번까지 번호가 매겨져 있다. 임의의 두 도시 사이에는 도로를 따라 이동하는 경로가 있다. 도로 ii의 길이는 LiL_i킬로미터이며, 이 도로는 도시 AiA_i와 BiB_i를 양방향으로 잇는다. 모든 도로의 길이는 양수이다. 즉 Li>0L_i > 0이다. 다만 각 도로의 길이는 잊어버린 상태이다.

도로 ii에서는 사람들이 모두 AiA_i에서 BiB_i 방향으로 한 방향으로만 이동한다. 이를 바탕으로 다음과 같은 가설을 세웠다.

  • 수도 역할을 하는 도시 SS가 있다.
  • 사람들은 수도에서 다른 도시로 이동한다.
  • 사람들은 최단 경로로 이동한다. 따라서 SS에서 AiA_i까지의 최단 거리는 SS에서 BiB_i까지의 최단 거리보다 작거나 같다.

각 도로의 길이를 임의의 양의 실수로 정할 수 있을 때, 이 조건을 만족하는 수도 SS를 모두 찾아라. 조건을 만족하는 도시가 적어도 하나 있다고 가정해도 된다.

입력

첫 줄에 두 정수 NN (2≤N≤5002 \le N \le 500)과 MM (N−1≤M≤N(N−1)2N-1 \le M \le \frac{N(N-1)}{2})이 주어진다.

이어지는 MM개의 줄에 AiA_i와 BiB_i (1≤Ai,Bi≤N1 \le A_i, B_i \le N)가 주어진다. 자기 자신으로 가는 도로와 같은 두 도시를 잇는 도로가 여러 개인 경우는 없다. 즉 Ai≠BiA_i \ne B_i이고, {Ai,Bi}={Aj,Bj}\{A_i, B_i\} = \{A_j, B_j\}이면 i=ji = j이다.

출력

첫 줄에 수도가 될 수 있는 도시의 개수 KK를 출력한다.

둘째 줄에는 수도가 될 수 있는 KK개의 도시를 오름차순으로 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    2 1
    1 2
    
    예상 출력
    1
    1