diff --git a/code_study/Baekjoon/swift/1647.swift b/code_study/Baekjoon/swift/1647.swift new file mode 100644 index 0000000..4e59676 --- /dev/null +++ b/code_study/Baekjoon/swift/1647.swift @@ -0,0 +1,80 @@ +struct Union { + var parent: [Int] + + init(_ N: Int) { + self.parent = Array(0...N) + } + + mutating func findParent(_ x: Int) -> Int { + if x != parent[x] { + parent[x] = findParent(parent[x]) + } + return parent[x] + } + + mutating func union(_ x: Int, _ y: Int) { + let parentX = findParent(x) + let parentY = findParent(y) + + if parentX < parentY { + parent[parentY] = parentX + } + else { + parent[parentX] = parentY + } + } + + mutating func isSameParent(_ a: Int, _ b: Int) -> Bool { + return findParent(a) == findParent(b) + } +} + +if let input1 = readLine(), + let NM = input1.split(separator: " ").compactMap({Int($0)}) as? [Int], + let N = NM.first, let M = NM.last +{ + if N==2 { + print(0) + } + else { + var edges: [(u:Int, v: Int, w: Int)] = [] + for _ in 0..