From 45e68c4f554e24cf3eac7ff8b65808a3349d459d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=99=A9=EC=A0=95=ED=9B=88=20=28Hwang=20JungHun=29?= Date: Tue, 10 Aug 2021 15:47:10 +0900 Subject: [PATCH] Create jh.java --- .../jh.java" | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 "Java/BOJ_3830_\352\265\220\354\210\230\353\213\230\354\235\200 \352\270\260\353\213\244\353\246\254\354\247\200 \354\225\212\353\212\224\353\213\244/jh.java" diff --git "a/Java/BOJ_3830_\352\265\220\354\210\230\353\213\230\354\235\200 \352\270\260\353\213\244\353\246\254\354\247\200 \354\225\212\353\212\224\353\213\244/jh.java" "b/Java/BOJ_3830_\352\265\220\354\210\230\353\213\230\354\235\200 \352\270\260\353\213\244\353\246\254\354\247\200 \354\225\212\353\212\224\353\213\244/jh.java" new file mode 100644 index 0000000..71845fc --- /dev/null +++ "b/Java/BOJ_3830_\352\265\220\354\210\230\353\213\230\354\235\200 \352\270\260\353\213\244\353\246\254\354\247\200 \354\225\212\353\212\224\353\213\244/jh.java" @@ -0,0 +1,61 @@ +import java.io.*; +import java.util.*; + +public class Main { + + static int N, M; + static int[] parent, weight; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + StringTokenizer st; + + do{ + st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + + parent = new int[N+1]; + weight = new int[N+1]; + for (int i = 1; i <= N; i++) + parent[i] = i; + + int a, b, w; + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + String t = st.nextToken(); + a = Integer.parseInt(st.nextToken()); + b = Integer.parseInt(st.nextToken()); + if (t.equals("!")){ + w = Integer.parseInt(st.nextToken()); + union(a, b, w); + } else{ + if(find(a)==find(b)) + bw.write(weight[b]-weight[a]+"\n"); + else + bw.write("UNKNOWN\n"); + } + } + } while(N!=0 && M!=0); + + bw.flush(); + bw.close(); + br.close(); + } + public static void union(int a, int b, int w){ + int pa = find(a); + int pb = find(b); + if (pa!=pb){ + weight[pb] = weight[a] - weight[b] + w; + parent[pb] = pa; + } + } + public static int find(int id){ + if (parent[id]==id) + return id; + int pid = find(parent[id]); + weight[id] += weight[parent[id]]; + return parent[id] = pid; + } +}