이분 그래프
그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때,
그러한 그래프를 이분 그래프(Bipartite Graph)라 부른다.
그래프가 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오.
https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%B6%84_%EA%B7%B8%EB%9E%98%ED%94%84
입력
첫 번째 줄에 테스트 케이스의 개수 \(T\)가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 정점의 개수 \(V\)와 간선의 개수 \(E\)가 공백을 사이에 두고 주어진다.
각 정점에는 1번부터 \(V\)번까지 번호가 붙어 있다.
이어서 \(E\)개의 줄에는 간선에 대한 정보가 주어지는데, 각 줄에 인접한 두 정점의 번호 \(u, v\)가 공백을 사이에 두고 주어진다.
간선은 방향이 없는 무방향 간선이다.
출력
각 테스트 케이스마다 주어진 그래프가 이분 그래프이면 YES, 아니면 NO를 한 줄에 하나씩 출력한다.
제한사항
- \(1 \le T \le 10\)
- \(1 \le V \le 20,000\)
- \(1 \le E \le 200,000\)
- 입력으로 주어지는 그래프는 중복 간선이나 자기 자신을 가리키는 간선(Self-loop)을 포함하지 않는다.
- 그래프가 하나로 연결되어 있지 않고 여러 개의 분리된 컴포넌트로 나뉘어 있을 수 있다.
예제 입력 1
2
3 2
1 3
2 3
4 4
1 2
2 3
3 4
4 1
예제 출력 1
YES
YES
예제 입력 2
1
3 3
1 2
2 3
3 1
예제 출력 2
NO
코멘트