Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. fin = open("input.txt")
  2. lines = []
  3. for line in fin:
  4. lines.append(line)
  5. n = len(lines)
  6. print(n)
  7.  
  8.  
  9. d = []
  10. smejnost = []
  11. v = []
  12. vstar = []
  13. p = []
  14. inf = 1e9
  15. for i in range(n):
  16. d.append([])
  17. p.append([])
  18. smejnost.append([])
  19. v.append(0)
  20. vstar.append([])
  21. for j in range(n):
  22. smejnost[i].append(0)
  23. d[i].append(inf)
  24. p[i].append(0)
  25. vstar[i].append(0)
  26.  
  27.  
  28. for i in range(n):
  29. s = lines[i]
  30. a,s = s.split('=')
  31. ss = s.split(')')
  32. a = int(a)
  33. a-=1
  34. for c in range(len(ss)-1):
  35. sss = ss[c].split('(')
  36. b,cost = sss[1].split(',')
  37. b = int(b)
  38. cost = int(cost)
  39. b -= 1
  40. d[a][b] = cost
  41. smejnost[a][b] = cost
  42. fin.close()
  43. fin = open("input2.txt")
  44.  
  45. s = fin.readline()
  46. s = s[1:len(s)-1].split(',')
  47. for c in s:
  48. a,b = c.split(':')
  49. a = int(a)
  50. b = int(b)
  51. v[a-1] = b
  52.  
  53. for i in range(n):
  54. d[i][i] = 0
  55.  
  56. for k in range(n):
  57. for i in range(n):
  58. for j in range(n):
  59. if d[i][k] < inf and d[k][j] < inf:
  60. d[i][j] = min(d[i][j], d[i][k] + d[k][j])
  61.  
  62. CBB = []
  63. for i in range(n):
  64. CBB.append(0)
  65. for j in range(n):
  66. CBB[i] += d[i][j]
  67. mediana = 0
  68. for i in range(n):
  69. if CBB[mediana] > CBB[i]:
  70. mediana = i
  71.  
  72. MBB = []
  73. for i in range(n):
  74. MBB.append(d[i][0])
  75. for j in range(n):
  76. MBB[i] = max(MBB[i], d[i][j])
  77. center = 0
  78. for i in range(n):
  79. if MBB[center] > MBB[i]:
  80. center = i
  81. print("D")
  82. for i in range(n):
  83. s = ""
  84. for j in range(n):
  85. s += str(d[i][j]) + ' '
  86. print(s)
  87. print("center " + str(center + 1))
  88. print("mediana " + str(mediana + 1))
  89.  
  90. P = inf
  91. for i in range(n):
  92. for j in range(i+1, n):
  93. if smejnost[i][j] > 0:
  94. # print(i+1,j+1,end=': ')
  95.  
  96. for k in range(n):
  97. if k == i or k == j:
  98. continue
  99. if v[k] * min(d[k][i], d[k][j])>p[i][j]:
  100. vstar[i][j] = k
  101. p[i][j] =v[k] * min(d[k][i], d[k][j])
  102.  
  103. # print(v[k]*min(d[k][i],d[k][j]),end=', ')
  104.  
  105. # print()
  106. #print(p[i][j])
  107.  
  108. P = min(P, p[i][j])
  109. H = inf
  110. for i in range(n):
  111. for j in range(i+1,n):
  112. if smejnost[i][j] > 0:
  113. H = min(H, p[i][j] + v[vstar[i][j]]*smejnost[i][j]/2)
  114.  
  115. print("P =", P)
  116. print("H =",H)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement