1일1알

백준 13023번 ABCDE C++ 본문

알고리즘

백준 13023번 ABCDE C++

영춘권의달인 2022. 3. 14. 13:20

출처 : https://www.acmicpc.net/problem/13023

 

서로 다른 5명이 이어져 있으면 된다.

dfs로 문제를 해결하였는데, 처음에 방문 표시를 엉뚱한 곳에다 해서 시간이 좀 걸렸다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>

using namespace std;
using ll = long long;

bool isAns = false;
vector<vector<int>> v(2001, vector<int>());
vector<bool> visited(2001, false);

void Dfs(int n, int cnt) {
	if (cnt == 4) {
		isAns = true;
		return;
	}
	visited[n] = true;
	for (int i = 0; i < v[n].size(); i++) {
		if (!visited[v[n][i]]) {
			Dfs(v[n][i], cnt + 1);
		}
	}
	visited[n] = false;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m;
	cin >> n >> m;
	
	for (int i = 0; i < m; i++) {
		int a, b;
		cin >> a >> b;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	int ans = 0;
	for (int i = 0; i < n; i++) {
		Dfs(i, 0);
		if (isAns) {
			ans = 1;
			break;
		}
	}
	cout<<ans;
};

'알고리즘' 카테고리의 다른 글

백준 6593번 상범 빌딩 C++  (0) 2022.03.16
백준 9084번 동전 C++  (0) 2022.03.15
백준 14226번 이모티콘 C++  (0) 2022.03.13
백준 2631번 줄세우기 C++  (0) 2022.03.12
백준 4158번 CD C++  (0) 2022.03.11