Beispiel #1
0
    def __str__(self):
        return str(self.v1) + ',' + str(self.v2) + ',' + str(self.e)


file = open('./clustering1.txt', 'r')
N = int(file.readline())
K = 4
data = file.readlines()
edges = [
    edge(int(line.split(' ')[0]), int(line.split(' ')[1]),
         int(line.split(' ')[2])) for line in data
]
heap = []
for e in edges:
    heapq.heappush(heap, e)

clusterNum = N
disjointSet = DisjointSet(N)

while clusterNum > K:
    aedge = heapq.heappop(heap)
    if not disjointSet.within(aedge.v1, aedge.v2):
        disjointSet.union(aedge.v1, aedge.v2)
        clusterNum -= 1
vmin = 32767
for e in edges:
    if not disjointSet.within(e.v1, e.v2) and vmin > e.e:
        vmin = e.e

print vmin
Beispiel #2
0
        
    def __cmp__(self,other):
        return self.e - other.e

    def __str__(self):
        return str(self.v1) + ',' + str(self.v2) + ',' + str(self.e)

file = open('./clustering1.txt','r')
N = int(file.readline())
K = 4
data = file.readlines()
edges = [edge(int(line.split(' ')[0]),int(line.split(' ')[1]),int(line.split(' ')[2])) for line in data]
heap = []
for e in edges:
    heapq.heappush(heap,e)

clusterNum = N
disjointSet = DisjointSet(N)

while clusterNum > K:
    aedge = heapq.heappop(heap)
    if not disjointSet.within(aedge.v1,aedge.v2):
        disjointSet.union(aedge.v1,aedge.v2)    
        clusterNum -= 1
vmin = 32767
for e in edges:
    if not disjointSet.within(e.v1,e.v2) and vmin > e.e:
        vmin = e.e

print vmin