OJ 1006:街區最短路徑問題
阿新 • • 發佈:2018-11-28
OJ 1006:街區最短路徑問題
因為只能東西,南北走,所以求一點到另一點的距離就等於橫縱座標的差的絕對值之和,我們將每個點的橫座標取出來,縱座標取出來,這個問題就成了這些數到哪個數的距離的和最小,分別求出橫座標和縱座標對應的哪個和,然後求和就行了
n=int(input()) while n>0: m=int(input()) l=[[] for x in range(m)] l1=[] l2=[] l3=[] l4=[] for i in range(m): l[i]=[int(x) for x in input().split()] for j in range(m): l1.append(l[j][0]) l2.append(l[j][1]) a=max(l1) b=min(l1) c=max(l2) d=min(l2) k=b e=d while k<=a: sum1=0 for q in l1: sum1 += abs(q-k) l3.append(sum1) k +=1 while e<=c: sum2=0 for p in l2: sum2 += abs(p-e) l4.append(sum2) e +=1 g=int(min(l3))+int(min(l4)) print(g) n -= 1