code: def computeStrongestPaths(self, profile, pairwisePreferences):
          
          cands = profile.candMap.keys()
          numCands = len(cands)
  
          # Initialize the two-dimensional dictionary that will hold our strongest paths.
          strongestPaths = dict()
          for cand in cands:
              strongestPaths[cand] = dict()
  
          for i in range(1, numCands + 1):
              for j in range(1, numCands + 1):
                  if (i == j):
                      continue
                  if pairwisePreferences[i][j] > pairwisePreferences[j][i]:
                      strongestPaths[i][j] = pairwisePreferences[i][j]
                  else:
                      strongestPaths[i][j] = 0
  
          for i in range(1, numCands + 1):
              for j in range(1, numCands + 1):
                  if (i == j):
                      continue
                  for k in range(1, numCands + 1):
                      if (i == k or j == k):
                          continue
                      strongestPaths[j][k] = max(strongestPaths[j][k], min(strongestPaths[j][i], strongestPaths[i][k]))
  
          return strongestPaths
docs: Returns a two-dimensional dictionary that associates every pair of candidates, cand1 and
          cand2, with the strongest path from cand1 to cand2.
  
          :ivar Profile profile: A Profile object that represents an election profile.
          :ivar dict<int,dict<int,int>> pairwisePreferences: A two-dimensional dictionary that
              associates every pair of candidates, cand1 and cand2, with number of voters who prefer
              cand1 to cand2.