728x90
728x90
풀이 과정
- 모든 노드들은 ABCDE 친구 관계가 성립하는지 그래프 탐색을 한다.
- 방문한적이 없는 노드는 해당 DFS로 탐색하고 깊이를 1 증가 시킨다. 깊이가 총 5번이면 관계가 성립 되었기에 ans 값을 true로 설정하고 return 해준다.
- dfs로 탐색이 끝났는데 ans 값이 false 면 해당 탐색했던 노드는 다시 방문 표시를 false로 설정한다.
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int n,m;
map<int,vector<int>> friends;
vector<bool> visited;
bool ans = false;
void dfs(int cur,int depth)
{
if(depth == 5)
{
ans = true;
return;
}
visited[cur] = true;
for(int i =0; i < friends[cur].size(); i++)
{
int next = friends[cur][i];
if(!visited[next]) dfs(next,depth + 1);
if(ans) return;
}
visited[cur] = false;
}
void input()
{
cin >> n >> m;
int a,b;
visited.resize(n,false);
for(int i=0; i<m; i++)
{
cin >> a >> b;
friends[a].push_back(b);
friends[b].push_back(a);
}
}
void solution()
{
input();
for(int i=0; i<n; i++)
{
dfs(i,1);
if(ans)
{
cout << ans;
return;
}
else
{
visited.clear();
visited.resize(n,false);
}
}
cout << ans;
}
int main(void)
{
solution();
return 0;
}
728x90
728x90
'Language > C++' 카테고리의 다른 글
[c++][백준 21923][BFS] 곡예 비행 - 컴도리돌이 (0) | 2022.03.04 |
---|---|
[c++][백준 21919][에라토스테네스의 체][유클리드 호제법] 소수 최소 공배수 - 컴도리돌이 (0) | 2022.03.01 |
[c++][백준 9663][BFS] N-Queen - 컴도리돌이 (0) | 2021.11.24 |
[c++][백준 15686][prev_permutaion] 치킨 배달 - 컴도리돌이 (0) | 2021.11.22 |
[c++][백준 2146][BFS] 다리 만들기 - 컴도리돌이 (0) | 2021.11.21 |