반응형
<코드>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
int N, M, x;
int city[201][201];
bool visit[201];
bool flag;
vector<int> check_list;
queue<int> q;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
cin >> city[i][j];
for (int i = 1; i <= M; i++)
{
cin >> x;
check_list.push_back(x);
}
q.push(check_list[0]);
while (!q.empty())
{
int now = q.front();
q.pop();
visit[now] = true;
for (int i = 1; i <= N; i++)
{
// 갈수있고 방문한적이없는 도시라면
if (city[now][i] == 1 && !visit[i])
q.push(i);
}
}
flag = true;
for (int i = 0; i < check_list.size(); i++)
{
if (!visit[check_list[i]])
{
flag = false;
break;
}
}
cout << (flag ? "YES" : "NO");
}
풀이 방법
여행할 도시들이 이어져있는지 판단하는 문제입니다.
첫번째로 여행할 도시를 큐에 넣고 BFS를 돌려 방문한 도시들을 check하고 여행할 도시들이 모두 방문표시 되어있는지 판단을 하여 답을 출력하였습니다.
1976번: 여행 가자
동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인
www.acmicpc.net
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 1717번 - 집합의 표현 (Union Find) (0) | 2021.02.08 |
---|---|
[C/C++] 백준 20040번 - 사이클 게임 (Union Find) (0) | 2021.02.07 |
[C/C++] 백준 10845번 - 큐 (0) | 2021.02.06 |
[C/C++] 백준 9095번 - 1, 2, 3 더하기 (DP) (0) | 2021.02.06 |
[C/C++] 백준 2193번 - 이친수 (DP) (0) | 2021.02.06 |