Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바PS
- 알고리즘
- QUICKSTARTGUIDE
- 다익스트라
- 백준코딩테스트
- BFS
- deque
- 세그먼트트리
- 네트워크플로우
- 백준
- COSPROJAVA1급
- 재귀함수
- GatherTown
- COSPRO
- 01BFS
- 취득후기
- 시뮬레이션
- YBMCOS
- 이젠 골드구현도 어렵네..
- 다이나믹프로그래밍
- spring
- 우선순위큐
- 엘라스틱서치
- 게더타운시작
- DFS
- java
- 구현
- PS
- 완전탐색
- dp
Archives
- Today
- Total
공부공간
BOJ - 1717 ) 집합의 표현 본문
https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
첫째 줄에 n(1≤n≤1,000,000), m(1≤m≤100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 포함되어 있는 집합과, b가 포함되어 있는 집합을 합친다는 의미이다. 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산은 1 a b의 형태로 입력이 주어진다. 이는 a와 b가 같은 집합에 포함되어 있는지를 확인하는 연산이다. a
www.acmicpc.net
합집합의 연산을 반복하면서, 특정 두 원소가 같은 집합에 속해있는지를 묻는 문제이다.
이 문제는 "너 서로소집합 메소드 구현할줄알아?"라고 물어보는 문제이다.
Rank를 계산하여 Union연산을 하는 것(Rank Compression)은 일반 코테에 자주 나오지는 않지만,
MST를 구성할 때 사용되는 크루스칼,프림알고리즘은 정형화 되어있어서 빠르게 습득하면 관련문제를
쉽게 풀수있다. 또한, Union연산시에, 경로 압축 ( Path Compression )을 통하여 합집합 연산을 해준다.
import java.util.Scanner;
public class Main {
static int parent[];
public static int find(int a) {
if(parent[a] == a) return a;
return find(parent[a]);
}
public static void union(int a , int b) {
// 부모끼리 합친다.
int pa = find(a);
int pb = find(b);
if(pa==pb) return;
if(pa>pb) { parent[pb] = pa;}
else { parent[pa] = pb;}
}
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
parent = new int[n+1];
for(int i = 0 ; i <= n ; i ++) parent[i] =i;
for(int i = 0 ; i < m ; i ++) {
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if(a == 0) {
union(b,c);
}else {
if(find(b) == find(c)) {
System.out.print("YES\n");
}else {
System.out.print("NO\n");
}
}
}
}
}
'알고리즘 > 구현,시뮬' 카테고리의 다른 글
프로그래머스 ) 지형이동 (1) | 2020.04.29 |
---|---|
BOJ - 1197 ) 최소 스패닝 트리 (1) | 2020.04.09 |
BOJ - 14891 ) 톱니바퀴 (0) | 2020.03.08 |
BOJ - 3190 ) 뱀 (0) | 2020.03.07 |
BOJ - 13458 ) 시험감독 (0) | 2020.03.07 |
Comments