RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00698

무너지는 다리

Diamond I 다이아몬드 I
난이도
5s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

정점이 \(N\)개인 무방향 그래프가 있다. 처음에는 간선이 하나도 없다.

이제 간선이 한 번에 하나씩, 총 \(Q\)개 추가된다. 각 간선이 추가될 때마다, 추가된 직후 그래프에 존재하는 다리(bridge)의 개수를 출력해야 한다.

다리란, 그 간선 하나를 제거했을 때 그 간선의 양 끝점이 서로 다른 연결 요소로 나뉘게 되는 간선을 말한다. 같은 두 정점 사이에 여러 개의 간선(중복 간선)이 추가될 수 있으며, 자기 자신으로의 간선은 주어지지 않는다.

간선은 오직 추가만 되고 절대 제거되지 않는다.

제약

\(1 \le N \le 100{,}000\)

\(1 \le Q \le 100{,}000\)

입력 형식

첫 줄에 정점 수 \(N\)과 추가되는 간선의 수 \(Q\)가 주어진다.

이어서 \(Q\)개의 줄에 각각 두 정수 \(u\), \(v\)가 주어지며, 정점 \(u\)\(v\)를 잇는 간선이 추가됨을 뜻한다 (\(1 \le u, v \le N\), \(u \neq v\)).

출력 형식

각 간선이 추가된 직후의 다리 개수를 한 줄에 하나씩, 총 \(Q\)줄 출력한다.

예제 1
입력
4 4
1 2
2 3
3 4
1 4
출력
1
2
3
0
설명

간선 1-2 추가 후 다리 1개. 2-3 추가 후 2개. 3-4 추가 후 3개(일자 경로). 마지막 1-4를 추가하면 사이클 1-2-3-4-1이 닫혀 모든 간선이 더 이상 다리가 아니므로 0개.

예제 2
입력
4 3
1 2
3 4
2 3
출력
1
2
3
설명

1-2 추가 후 다리 1개. 3-4 추가 후 서로 떨어진 두 다리로 2개. 2-3을 추가하면 네 정점이 하나의 경로로 이어져 다리가 3개가 된다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

무너지는 다리

개요
출제자 난이도 Diamond I 다이아몬드 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

무너지는 다리

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8