有一群人到了一個蠻荒之地開墾,經過很多努力,開闢了 個農場,他們也開闢了一些道路連接這些農場,每一條道路連接兩個不同的農場。由於道路開闢困難,總共只開闢了 條道路,但任何兩個農場之間,都有長度大於零的路徑直接或間接連接。王老先生擁有其中的 個農場,不過這些農場不一定全部直接連接在一起,可能有兩個王老先生的農場之間,需要經過其他人的農場才能互相來回。
王老先生將他的農場由 到 編號,其中 號農場也是他的住家。他記錄了他的任兩個農場之間的距離,想要規劃出一條從住家( 號農場)出發、巡視經過所有他的農場、最後回到住家的最短路徑。當然,對於規劃出的路徑,各個農場經過的順序與次數皆不限定,中間也可以經過其他人的農場。注意到王老先生並沒有其他農場的資訊,因此王老先生只能透過這 個農場兩兩之間的距離來計算最短路徑。
請你撰寫一支程式,幫王老先生計算出最短的路徑長度,滿足該路徑能巡視經過所有他的農場,最後回到住家。
舉例來說,假設 ,而王老先生擁有其中的 個農場。下圖表示了所有 個農場的結構,其中王老先生的農場被標上了 的編號:
:::align{center}
:::
由於王老先生記錄了他的任兩個農場之間的距離,我們可以將這些距離表示成如下的距離矩陣 ,其中 (第 列的第 行)是農場 到 的距離。可以發現,一個距離矩陣必然是對稱矩陣且對角線均為 :
而透過距離矩陣提供給我們的資訊,可以找出在這個例子中,最短的路徑是 ,長度為 。