タイトル説明
暁明は現在、卒業旅行の計画をしています。都市の数に、それぞれ、北京からの出発を意図して、一度だけ高速鉄道に乗って、そしてそれぞれの都市にされている各都市の間、北京に戻りました。限られた資金のために、合理的な経路によって、できるだけ道路上の州の経費の一部を手配することを望んで。都市と都市の各ペアの価格の間の列車のセットを考えると、各都市は一度だけ訪れ、最小運賃費の出発点に戻りました。
入力説明:
都市数N(北京を含む1 <n≤20)
都市間のチケット価格n行及び列のN個の行列をM [N] [N]
出力説明:
最小運賃の支出
Pythonのlanguage'veが起こるがある、残業前に安全オファーの件名を証明するために行われている、質問は問題を抱えているように見えるオフラインで牛を作りました。
このプラットフォームレベルの言語は非常に欺瞞殺すために。
C ++のコードを探して:
1の#include <iostreamの> 2の#include <ベクトル> 3の#include <unordered_map> 4 使って 名前空間STDを、 5 6 INT getAns(ベクトル<ベクトル< INT >>&NUMS){ 7 8 INT M = 0x7ffffff 。 9 INT N = nums.size()。 10 ベクトル<ベクトル< INT >> DP(1 << nは、ベクトル< INT > (N、M))。 11 DP [ 1 ] [ 0 ] = 0 。 (int型 i = 1 ; iがN <; I ++)は、DP [ 1 << i]は[I] = M。 13 のために(int型 i = 1 ; iが(< 1 ; << N)iが++ ){ 14 のために(INT J = 0 ; J <nであり、j ++ ){ 15 であれば(DP [I] [J] =!M){ 16 のための(int型のk = 0 ; K <N; ++ k個){ 17 であれば((I&(1 << K))== 0 ){ 18 、DP [I |(1 << K)] [K] =分( DP [I |(1 << K)] [K]、DP [I] [J] + NUMS [J] [K])。 19 } 20 } 21 } 22 } 23 } 24 INT ANS = M。 25 のために(int型 i = 1 ; iがN <; Iは++ ){ 26の ANS =分(ANS、DP [(1 << N) - 1 ] [I] + NUMS [I] [ 0 ])。 27 } 28の リターンANS。 29 } 30 int型のmain(){ 31 INT N。 32 一方(CIN >> N){ 33 ベクトル<ベクトル< INT >>エッジ(N、ベクトル< INT >(N、0 )); 34 INT X。 35 のために(int型 I = 0 ; iがN <; Iは++ ){ 36 のために(INT J = 0 ; J <nであり、j ++ ){ 37 CIN >> エッジ[I] [J]。 38 } 39 } 40 COUT << getAns(エッジ)<< ENDL。 41 } 42 リターン 0; 43 }