알고리즘/백준(BOJ)

백준 - 1976 여행 가자

시나모온 2020. 7. 3. 05:11

문제 링크입니다 : https://www.acmicpc.net/problem/1976

 

1976번: 여행 가자

동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인

www.acmicpc.net

 

 

 

 

 

 

 

 

#include <cstdio>

using namespace std;

int parent[201];
int N, M;

int findParent(int a) {
    if(parent[a] == a) return a;
    return parent[a] = findParent(parent[a]);
}

void unionParent(int a, int b) {
    a = findParent(a);
    b = findParent(b);

    if(a > b) parent[a] = b;
    else parent[b] = a;
}


int main() {
    scanf("%d %d", &N, &M);

    for(int i = 1; i <= N; i++) {
        parent[i] = i;
    }

    int conn;
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= N; j++) {
            scanf("%d", &conn);
            if(conn) {
                unionParent(i, j);
            }
        }
    }
    
    int arr[1001];
    for(int i = 0; i < M; i++) {
        scanf("%d", &arr[i]);
    }

    for(int i = 1; i < M; i++) {
        if(findParent(arr[i - 1]) != findParent(arr[i])) {
            printf("NO");
            return 0;
        }
    }

    printf("YES");


    return 0;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~