20251117 baekjoon
This commit is contained in:
parent
26d486d52b
commit
5737de5c2b
54
code_study/Baekjoon/swift/20040.swift
Normal file
54
code_study/Baekjoon/swift/20040.swift
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
struct Union_Find {
|
||||||
|
var root: [Int]
|
||||||
|
|
||||||
|
init(_ N: Int) {
|
||||||
|
self.root = Array(0...N)
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func find(_ x: Int) -> Int {
|
||||||
|
if x == root[x] {
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
|
||||||
|
root[x] = find(root[x])
|
||||||
|
return root[x]
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func union(_ a: Int, _ b: Int) {
|
||||||
|
let x = find(a)
|
||||||
|
let y = find(b)
|
||||||
|
|
||||||
|
if x>=y {
|
||||||
|
root[x] = y
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
root[y] = x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func same_root(_ x: Int, _ y: Int) -> Bool {
|
||||||
|
return find(x) == find(y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let input = readLine(),
|
||||||
|
let nums = input.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
let N = nums.first, let M = nums.last
|
||||||
|
{
|
||||||
|
var uf = Union_Find(N)
|
||||||
|
|
||||||
|
var result = 0
|
||||||
|
for m in 1...M {
|
||||||
|
guard let line = readLine(),
|
||||||
|
let point = line.split(separator: " ").map({Int($0)}) as? [Int],
|
||||||
|
let a = point.first, let b = point.last else { break }
|
||||||
|
|
||||||
|
if uf.same_root(a, b) {
|
||||||
|
result = m
|
||||||
|
break
|
||||||
|
}
|
||||||
|
uf.union(a, b)
|
||||||
|
}
|
||||||
|
|
||||||
|
print(result)
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user