Distributed Algorithms for Minimum Spanning Trees