문제
내 코드
// [13023] ABCDE
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
bool visited[2001];
vector<int> friendsInfo[2001];
void dfs(int x, int depth)
{
if(depth == 4) {
cout << "1\n";
exit(0);
}
visited[x] = true;
for(int i = 0; i < friendsInfo[x].size(); i++) {
int next = friendsInfo[x][i];
if(visited[next] == false) {
dfs(next, depth + 1);
}
}
visited[x] = false; // 중요
}
int main(void)
{
int n, m, a, b;
cin >> n >> m;
for(int i = 0; i < m; i++) {
cin >> a >> b;
friendsInfo[a].push_back(b);
friendsInfo[b].push_back(a);
}
for(int i = 0; i < n; i++) {
memset(visited, false, sizeof(visited));
dfs(i, 0); // dfs(출발점, 깊이)
}
cout << "0\n"; // dfs에서 종료되지 못한 경우
return 0;
}
반응형
'Baekjoon > DFS' 카테고리의 다른 글
[4963] 섬의 개수(C++) (0) | 2022.06.29 |
---|---|
[1388] 바닥 장식(C++) (0) | 2022.06.25 |
[11725] 트리의 부모 찾기(C++) (0) | 2021.02.14 |
[11724] 연결 요소의 개수 (0) | 2020.06.23 |
[4963] 섬의 개수(C++) (0) | 2020.05.19 |