하루 1문제 챌린지/Gold4

백준 1976번 여행가자(C++)🚩

그린푸딩 2024. 2. 28. 12:59
728x90
반응형
#include<vector>
#include <iostream>

using namespace std;

vector<int>parent;

int find(int node){
    if(parent[node]<0)return node;
    
    return parent[node]=find(parent[node]);
}

void unions(int x,int y){
    
    int xp=find(x);
    int yp=find(y);
    
    if(xp==yp)return; 
    
    if(parent[xp]<parent[yp]){
       parent[xp]+=parent[yp];
       parent[yp]=xp;
    }
    else{
       parent[yp]+=parent[xp];
       parent[xp]=yp;
        
    }
}


int main()
{
   
   int n,m;
   cin>>n>>m;
   parent.assign(n+1,-1);
   
   int t;
   for(int i=1;i<=n;i++){
       for(int j=1;j<=n;j++){
           cin>>t;
           if(t==1){
            
               unions(i,j);
           }
       }
   }
   
   int a,b;
   cin>>a;
   for(int i=1;i<m;i++){
       cin>>b; 
       if(find(a)!=find(b)){
           cout<<"NO"; return 0;
       }
   }
   cout<<"YES";
    return 0;
}
728x90
반응형

'하루 1문제 챌린지 > Gold4' 카테고리의 다른 글

백준 1806번 부분합(C++)  (0) 2024.03.02
백준 20040번 사이클 게임(C++)  (0) 2024.02.29