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 | 29 | 30 | 31 |
Tags
- MySQL
- 개발자에세이
- django slack bot
- add colume
- innodb_buffer_pool_size 오류
- 개발자와 비즈니스 관계
- 업비트 웹소켓
- public.pem
- 비즈니스적 관점에서 생각하는 개발자
- 슬랙봇
- AWS Aurora
- django #django 5.0 #django 5.0 요약
- #데이터베이스 #트랜잭션 #ACID #격리수준
- 개발자의 마인드
- ssl.key
- #백준 #드래곤커브 #알고리즘
- django slack
- 정렬
- 비즈니스적 관점에서 생각하는 개발자 #개발자 마인드
- sed명령어
- 숲을 바라보는 개발자
- django 슬랙봇
- slack bot
- 개발자와 비즈니스
- 데이터베이스 오류
- private.pem
- 알고리즘
- #알고리즘
- 비즈니스
- 웹소켓 api
Archives
- Today
- Total
Info-Tech
집합의 표현 - 1717번 문제 본문
이 문제는 Union-find의 대표적인 문제이다
입력중에서 0인 경우 union을 해주면 되고, 1인 경우 find를 해주어서
루트가 똑같을 경우 YES, 아닐 경우 NO를 출력 해 주면 된다.
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int parent[]; static int rank[]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line [] = br.readLine().split(" "); int n = Integer.valueOf(line[0]); int m = Integer.valueOf(line[1]); parent = new int[n+1]; rank = new int[n+1]; for(int i=1; i<=n; i++) { parent[i] = i; rank[i] = 0; } for(int i=0; i<m; i++) { line = br.readLine().split(" "); if(Integer.valueOf(line[0]) == 0) { union(Integer.valueOf(line[1]), Integer.valueOf(line[2])); } else { if(find(Integer.valueOf(line[1])) == find(Integer.valueOf(line[2]))) System.out.println("YES"); else System.out.println("NO"); } } } public static int find(int x) { if(x == parent[x]) return x; else return parent[x] = find(parent[x]); } public static void union(int p, int q) { p = find(p); q = find(q); if(p == q) return; if(rank[p] < rank[q]) parent[p] = q; else { parent[q] = p; } if(rank[p] == rank[q]) rank[p]++; } } | cs |
'백준문제풀이' 카테고리의 다른 글
스타트와 링크 14899번 문제 (0) | 2018.10.31 |
---|---|
파티 1238번 문제 (0) | 2018.10.25 |
드래곤 커브 (0) | 2018.10.23 |
Comments