# Updating One Edge in MST
Suppose we are given both an undirected graph G with weighted edges and a minimum spanning tree T of G.
Describe an algorithm to update the minimum spanning tree when the weight of a single edge e is decreased.
The input to your algorithm is the edge e and its new weight; your algorithms should modify T so that it is still a minimum spanning tree.
Hint: Consider the cases e in T and e not in T separately.
# Case 1
**Case: The edge e is in T**
* Let e = (u,v) be an edge that belongs to the current T, and its weight is decreased
**Algorithm**
The algorithm simply updates the weight of e in T to the new smaller value without changing the tree edges.
* by decreasing the weight of an edge, it makes it more suitable and does not invalidate the MST
* cut property --> guarantees that any MST containing the edge before updating it remains valid
Therefore, if:
* e ∈ T: update its weight --> MST remains the same
# Case 2
**Case: The edge e is not in T**
* Let e = (u,v) be an edge not in T, and its weight decreases
**Algorithm**
* Add edge e to the MST T, creating a unique cycle
* after adding edge e, find the cycle formed --> (edge e) + (path between u and v)
* find the heaviest edge f on the cycle
* compare weights between e and f
* if new weight of e is smaller than weight of f, remove f and keep e
* if new weight of e is NOT smaller than weight of f, keep old MST
* resulting tree is the final MST
Adding e creates a cycle:
Cycle property --> maximum weight edge on the cycle cannot belong to an MST
Therefore, if:
* 𝑒 ∉ 𝑇: add e, find the cycle, remove heaviest edge on the cycle