페이지

1976번: 여행 가자

https://www.acmicpc.net/problem/1976


#include<stdio.h>
bool rink[220][220], check[220];
int N, M, data[1000];
void dfs(int x)
{
    int i;
    check[x] = true;
    for (i = 1; i <= N; i++)
    {
        if (rink[x][i] && check[i] == false) dfs(i);
    }
}
int main()
{
    int i, j;
    scanf("%d%d", &N, &M);
    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            scanf("%d", &rink[i][j]);
        }
    }
    for (i = 1; i <= M; i++)
    {
        scanf("%d", &data[i]);
    }
    dfs(data[1]);
    for (i = 1; i <= M; i++)
    {
        if (check[data[i]] == false)
        {
            printf("NO");
            break;
        }
    }
    if (i == M + 1)
    {
        printf("YES");
    }
    return 0;
}

댓글 없음 :

댓글 쓰기