總時間限制: 1000ms
記憶體限制: 10000kb
很久很久以前,森林裡住著一群兔子。兔子們無聊的時候就喜歡研究星座。如圖所示,天空中已經有了n顆星星,其中有些星星有邊相連。兔子們希望刪除掉一些邊,然後使得保留下的邊仍能是n顆星星連通。他們希望計算,保留的邊的權值之和最小是多少?樣例輸入輸入
第一行只包含乙個表示星星個數的數n,n不大於26,並且這n個星星是由大寫字母表裡的前n個字母表示。接下來的n-1行是由字母表的前n-1個字母開頭。最後乙個星星表示的字母不用輸入。對於每一行,以每個星星表示的字母開頭,然後後面跟著乙個數字,表示有多少條邊可以從這個星星到後面字母表中的星星。如果k是大於0,表示該行後面會表示k條邊的k個資料。每條邊的資料是由表示連線到另一端星星的字母和該邊的權值組成。權值是正整數的並且小於100。該行的所有資料字段分隔單一空白。該星星網路將始終連線所有的星星。該星星網路將永遠不會超過75條邊。沒有任何乙個星星會有超過15條的邊連線到其他星星(之前或之後的字母)。在下面的示例輸入,資料是與上面的圖相一致的。
輸出
輸出是乙個整數,表示最小的權值和
9樣例輸出 此題容易聯絡到最小生成樹問題,且由於題幹指出a 2 b 12 i 25
b 3 c 10 h 40 i 8
c 2 d 18 g 55
d 1 e 44
e 2 f 60 g 38
f 0
g 1 h 35
h 1 i 35
該星星網路將永遠不會超過75條邊。沒有任何乙個星星會有超過15條的邊連線到其他星星故即使是複雜度為o(
v2)
的演算法也可以駕馭。此題主要注意輸入表示即可。
為簡便起見,本次用鄰接矩陣實現此無向圖。由於
這n個星星是由大寫字母表裡的前n個字母表示故直接將字母(char型)讀入後,減去『a』的ascii碼,得到字母對應的矩陣行列數,便可方便對矩陣進行初始化。至此便完成了無向圖的輸入。
@ [email protected]
// author: florence
// created time: 2017-08-09 16:38:17
#include
#include
#define max_n 30
#define inf 110
using
namespace
std;
int v,num,res = 0;
char t;
int dis;
char l;
int cost[max_n][max_n];
int d[max_n],used[max_n];
int prim()
if (v == -1) break;
used[v] = true;
res += d[v];
//更新距離陣列d
for (int i = 0;i < v;i++)
}cout
<< res << endl;
}int main(int argc, char** argv)
}//鄰接矩陣初始化
for (int i = 0;i < v - 1;i++)
}prim();
return
0;}
總體來說,這是一道經典的最小生成樹問題,適合基礎入門的學習。
兔子與兔子
很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的 dna 序列。我們首先選取乙個好長好長的 dna 序列 小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母 然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。注意兩個兔...
雜湊 兔子與兔子
題目描述 很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的 dna 序列。我們首先選取乙個好長好長的 dna 序列 小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母 然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。...
hash 兔子與兔子(C )
time limit 10 sec memory limit 128 mb submit 376 solved 75 submit status web board 很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的dna序列。我們首先選取乙個好長好長的dna序列 小兔子是外星生物,dn...