🧩PS/🥈Nomal
[C/C++] 백준 1976번 - 여행 가자 (BFS)
Cocoon_
2021. 2. 7. 19:01
반응형
<코드>
#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
반응형