(prim題型二)佈線問題

2021-07-11 17:35:17 字數 1876 閱讀 5743

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:4 描述

南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件:

1、把所有的樓都供上電。

2、所用電線花費最少

輸入第一行是乙個整數n表示有n組測試資料。(n<5)

每組測試資料的第一行是兩個整數v,e.

v表示學校裡樓的總個數(v<=500)

隨後的e行裡,每行有三個整數a,b,c表示a與b之間如果建鋪設線路花費為c(c<=100)。(哪兩棟樓間如果沒有指明花費,則表示這兩棟樓直接連通需要費用太大或者不可能連通)

隨後的1行裡,有v個整數,其中第i個數表示從第i號樓接線到外界供電設施所需要的費用。( 0

輸出每組測試資料輸出乙個正整數,表示鋪設滿足校長要求的線路的最小花費。

樣例輸入

1

4 61 2 10

2 3 10

3 1 10

1 4 1

2 4 1

3 4 1

1 3 5 6

樣例輸出

4

**[張云聰]原創

上傳者

張云聰比較好的prim演算法模板:

#include

#include

using  namespace std;

#define max 100

#define maxcost 0x7fffffff

int graph[max][max];

int prim(int graph[max], int n)

mst[1] = 0;

for (i = 2; i <= n; i++)

}cout << "v" << mst[minid] << "-v" << minid << "=" << min << endl;

sum += min;

lowcost[minid] = 0;

for (j = 2; j <= n; j++)}}

return sum;

}int main()

}//構建圖g

for (k = 1; k <= n; k++)

//求解最小生成樹

cost = prim(graph, m);

//輸出最小權值和

cout << "最小權值和=" << cost << endl;

system("pause");

return 0;

}此題原始碼:

#include

using  namespace std;

#define max 505

#define maxcost 0x7fffffff

int graph[max][max];

int prim(int graph[max], int n)

mst[1] = 0;

for (i = 2; i <= n; i++)

}//cout << "v" << mst[minid] << "-v" << minid << "=" << min << endl;

sum += min;

lowcost[minid] = 0;

for (j = 2; j <= n; j++)}}

return sum;

}int main()

}for (k = 1; k <= n; k++)

cost = prim(graph, m);

int min_v=maxcost;

for(int i=1;i<=m;++i)

cout <}

return 0;

}        

Nyoj38 佈線問題 prim

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入第一行是乙個整數n表示有n組測試資料。n 5 每組測試資料的第一行是兩個整數v,...

Prim演算法 例4 10 最優佈線問題

時間限制 1000 ms 記憶體限制 65536 kb 提交數 404 通過數 215 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線...

佈線問題 38 最小生成樹 prim

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入第一行是乙個整數n表示有n組測試資料。n 5 每組測試資料的第一行是兩個整數v,...