-
[1976] 여행 가자BOJ 2022. 3. 2. 01:13
https://www.acmicpc.net/problem/1976
1976번: 여행 가자
동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인
www.acmicpc.net
같은 도시를 여러 번 방문이 가능하다는 조건에 의해서, "[1717] 집합의 표현"과 거의 동일한 문제가 되었다.
#include <bits/stdc++.h>using namespace std;#ifdef ONLINE_JUDGEconstexpr bool local = false;#elseconstexpr bool local = true;#endifusing ll = long long;using pi = pair<ll, ll>;#define union _unionint n, m, p[201];int find(int cur) {if (p[cur] < 0) return cur;return p[cur] = find(p[cur]);}void union(int A, int B) {A = find(A), B = find(B);if (A == B) return;if (p[A] < p[B])p[A] += p[B], p[B] = A;elsep[B] += p[A], p[A] = B;}int main(void) {if (!local) ios_base::sync_with_stdio(0), cin.tie(0);cin >> n >> m;memset(p, -1, sizeof(p));int i, j;for (i = 0; i < n; i++) {for (j = 0; j < n; j++) {int x;cin >> x;if (x == 1) union(i + 1, j + 1);}}vector<int> v(m);for (i = 0; i < m; i++) cin >> v[i];for (i = 0; i < m; i++) {for (j = 0; j < m; j++) {if (find(v[i]) != find(v[j])) {cout << "NO";return 0;}}}cout << "YES";return 0;}
'BOJ' 카테고리의 다른 글
[2512] 예산 (0) 2022.03.02 [4195] 친구 네트워크 (0) 2022.03.02 [2696] 중앙값 구하기 (0) 2022.02.27 [5052] 전화번호 목록 (0) 2022.02.27 [6359] 만취한 상범 (0) 2022.02.26