문제
내 코드
// [1707] 이분 그래프
// https://www.acmicpc.net/problem/1707
// 그래프, dfs, bfs
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
vector<int> list[200001];
int visited[200001], v;
bool ans = true;
void bipartite(int start)
{
queue<int> q;
visited[start] = 1;
q.push(start);
while (!q.empty()) {
int x = q.front(); q.pop();
for (int i = 0; i < list[x].size(); i++) {
int next = list[x][i];
if (visited[next] == 0) {
visited[next] = 3 - visited[x];
q.push(next);
}
else {
if(visited[next] != 3 - visited[x]) {
ans = false;
}
}
}
}
}
void initialize(int n)
{
memset(visited, 0, sizeof(visited));
list->clear();
for(int i = 0 ; i <= n ; i++) {
list[i].clear();
}
ans = true;
}
void solve()
{
for(int i = 1 ; i <= v ; i++) {
if(visited[i] == 0) {
ans = true;
bipartite(i);
if(ans == false) {
cout << "NO" << '\n';
break;
}
}
}
if(ans == true) cout << "YES" << '\n';
}
void input()
{
int k, e, v1, v2;
cin >> k;
while(k--) {
cin >> v >> e;
initialize(v);
for(int i = 0 ; i < e ; i++) {
cin >> v1 >> v2;
list[v1].push_back(v2); list[v2].push_back(v1);
}
solve();
}
}
int main(void)
{
input();
return 0;
}
반응형
'Baekjoon > BFS' 카테고리의 다른 글
[7576] 토마토 (0) | 2022.06.25 |
---|---|
[2178] 미로 탐색(C++) (0) | 2022.06.25 |
[10451] 순열 사이클(C++) (0) | 2020.01.10 |
[1260] DFS와 BFS(C++) (0) | 2019.09.15 |
[1697] 숨바꼭질(C++) (0) | 2019.09.15 |