import Foundation
func solution(_ n:Int, _ edge:[[Int]]) -> Int {
let INF = 987654321
var graph = [[Int]](repeating: [], count: n+1)
var distance = [Int](repeating: INF, count: n+1)
for element in edge {
graph[element[0]].append(element[1])
graph[element[1]].append(element[0])
}
func bfs(_ start: Int) {
var q = [start]
distance[start] = 0
while !q.isEmpty {
let first = q.removeFirst()
for cloest in graph[first] where distance[cloest] == INF {
distance[cloest] = distance[first] + 1
q.append(cloest)
}
}
}
bfs(1)
let sortedDistance = distance[1...].sorted(by: >)
let maxValue = sortedDistance.first!
var count = 0
for element in sortedDistance {
if element != maxValue { break }
count += 1
}
return count
}