Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
백준 1976번 _ 여행 가자 본문
https://www.acmicpc.net/problem/1976
풀이방법
그냥 유니온 파인드 알고리즘 이용하면 답 나옴(밑의 url참조)
https://kunkunwoo.tistory.com/22
전체코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int parents[201];
int N, M;
void makeParents()
{
for (int i = 1; i <= N; i++)
parents[i] = i;
}
int getParent(int a)
{
if (parents[a] == a) return a;
return parents[a] = getParent(parents[a]);
}
void Union(int a, int b)
{
a = getParent(a);
b = getParent(b);
if (a == b)
return;
parents[b] = a;
}
void Input()
{
cin >> N;
cin >> M;
makeParents();
int value;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
cin >> value;
if (value == 0)
continue;
Union(i, j);
}
}
}
void solve()
{
vector<int>travel;
int tmp;
for (int i = 0; i < M; i++)
{
cin >> tmp;
travel.push_back(tmp);
}
bool possible = true;
for (int i = 0; i < M - 1; i++)
{
if (getParent(travel[i]) != getParent(travel[i + 1]))
possible = false;
}
if (possible)
cout << "YES";
else
cout << "NO";
}
int main()
{
Input();
solve();
return 0;
}
후기
ㅎㅎ
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
알고스팟_ 외발 뛰기 _ 동적 계획법 (0) | 2020.04.26 |
---|---|
백준 1916번 _ 최소비용 구하기 (0) | 2020.04.26 |
백준 14502번 _ 연구소 (0) | 2020.04.25 |
백준 14501번 _ 퇴사 (0) | 2020.04.25 |
알고스팟_울타리 잘라내기_ 분할정복 (0) | 2020.04.24 |
Comments