1.실패 원인
일단 이분그래프가 뭔지를 몰랐다. 개념을 습득하고 나서는 컴파일 에러와 실패에 허덕이다 결국 포기..
그래프는 아이디어가 딱 안떠오르면 그대로 틀리는 것 같다.
2.작성 코드
#include <iostream>
#include <vector>
using namespace std;
vector<int> v[20001];
int visit[20001] = { 0, };
void dfs(int start, int color) {
visit[start] = color;
for (int i = 0; i < v[start].size(); i++) {
int next = v[start][i];
if (!visit[next]) {
dfs(next, 3 - color);
}
}
}
int V, E;
bool isBinaryGraph() {
for (int i = 1; i <= V; i++) {
for (int j = 0; j < v[i].size(); j++) {
int next = v[i][j];
if (visit[i] == visit[next])return false;
}
}
return true;
}
int main() {
int K = 0;
cin >> K;
for (int i = 0; i < K; i++) {
/* for (int j = 1; j < 20001; j++) {
v[j].clear();
}
memset(visit, 0, sizeof(visit));*/
cin >> V >> E;
for (int i = 0; i < E; i++) {
int uu, vv;
cin >> uu >> vv;
v[uu].push_back(vv);
v[vv].push_back(uu);
}
for (int j = 1; j <= V; j++) {
if (visit[j] == 0) {
dfs(j, 1);
}
}
if (isBinaryGraph() == true) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}
return 0;
}
3.참고 코드
https://jaimemin.tistory.com/648
이번에도 꾸준함님의 블로그를 참고했다.
bool 조건 부분을 제외하고는 거의 비슷했었는데..
근데 왜 안되는지 아직도 모르겠다 ㅜㅜ 예시 입력은 성공이던데
4. 해결 방안
문득 저번학기에 들은 유튜브 알고리즘 강의가 허사일이 아니었나 생각이 들었다.
이건 진짜 꾸준하게 계속 해야하는데.. 학기중에 시간 내기가 어려워서 중간중간에
텀이 계속 있으니.. 알던것도 모르게되고 흐름이 끊겨서 실력이 전혀 늘지 않는것 같다
강의를 구입해볼까 생각도했지만 .. 강의가 문제가 아닐것같아서 비싼 돈들이기도 싫다.
익숙해질때까지 계속 푸는게 정답일 것이다.
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
백준 2331. 반복수열 [성공] (0) | 2020.07.06 |
---|---|
백준 10451. 순열 사이클 [성공] (0) | 2020.07.06 |
[그래프] 1260. DFS,BFS (0) | 2020.05.11 |
[소수] 6588. 골드바흐의 추측 (0) | 2020.05.06 |
[소수] 1929. 소수 구하기 (0) | 2020.05.05 |