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 |