import sys class Graph: def __init__(self, f): self.reset() self.read(f) def reset(self): self.vertex = [] self.edge = [] def read(self, f): if not isinstance(f, file): f = file(f) nvertex, nedge = map(int, f.readline().split()) for i in xrange(nvertex): vx, vy, vdeg = map(int, f.readline().split()) self.vertex.append((vx, vy)) for i in xrange(nedge): v1, v2 = map(int, f.readline().split()) self.edge.append((v1, v2)) def load(n): return Graph('Graphs\\ch%04d.graph' % n) def similarity(src, dest): dists = [] for v in dest.vertex: idists = [] for e in src.edge: start, end = src.vertex[e[0]], src.vertex[e[1]] if start == end: continue delta = (end[0] - start[0], end[1] - start[1]) vv = (v[0] - start[0], v[1] - start[1]) factor = float(vv[0] * delta[0] + vv[1] * delta[1]) / \ (delta[0] ** 2 + delta[1] ** 2) if factor < 0: factor = 0 if factor > 1: factor = 1 distance = ((vv[0] - factor * delta[0]) ** 2 + \ (vv[1] - factor * delta[1]) ** 2) ** 0.5 idists.append(distance) dists.append(min(idists)) return sum(dists) / len(dists) g = [] for i in xrange(12): g.append(load(i+1)) for i in g: for j in g: print '%5.1f' % similarity(i, j), print