import java.io.*;
import java.util.*;
public class Main {
public static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
//입력값 받기
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int M = Integer.parseInt(stringTokenizer.nextToken());
//유니온 파인드 문제.
//유니온 파인드 일차원 배열 만들기 및 루트 초기화
arr = new int[N + 1];
for (int i = 1; i <= N; i++) {
arr[i] = i;
}
//0 a b -> a와 b를 같은 집합으로 묶기(대표 노드끼리 연결)
//1 a b -> a와 b가 같은 집합인지 확인 후 출력
for (int i = 0; i < M; i++) {
stringTokenizer = new StringTokenizer(br.readLine());
int first = Integer.parseInt(stringTokenizer.nextToken());
int a = Integer.parseInt(stringTokenizer.nextToken());
int b = Integer.parseInt(stringTokenizer.nextToken());
if (first == 0) {
union(a, b);
} else {
if (checkSame(a, b)) System.out.println("YES");
else System.out.println("NO");
}
}
}
private static void union(int a, int b) {
a = find(a);
b = find(b);
if (a != b) {
arr[b] = a;
}
}
private static boolean checkSame(int a, int b) {
a = find(a);
b = find(b);
return a == b;
}
private static int find(int a) {
if (a == arr[a]) return a;
else return arr[a] = find(arr[a]);
}
}
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static int[][] matrix;
public static int N, M;
public static int[] root;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
//입력값 받기
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
//초기화 및 연결
matrix = new int[N][N];
StringTokenizer stringTokenizer;
for (int i = 0; i < N; i++) {
stringTokenizer = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
matrix[i][j] = Integer.parseInt(stringTokenizer.nextToken());
}
}
root = new int[N+1];
for (int i = 1; i <= N; i++) {
root[i] = i;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (matrix[i][j] == 1) unoin(i, j);
}
}
String[] cities = br.readLine().split(" ");
List<Integer> list = Arrays.stream(cities)
.map(Integer::parseInt)
.map(i -> find(i - 1))
.distinct().collect(Collectors.toList());
if(list.size()==1) System.out.println("YES");
else System.out.println("NO");
}
private static void unoin(int i, int j) {
i = find(i);
j = find(j);
if (i != j) root[j] = i;
}
private static int find(int i) {
if (i == root[i]) {
return i;
} else return root[i] = find(root[i]);
}
}
오전 SQL 노랭이 풀이 완료.
월화 이틀은 면접 준비 열심히 하고, 수목금엔 SQLD 시험 준비 마저 해야겠다.