時間限制:
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
輸出每組測試資料輸出乙個正整數,表示鋪設滿足校長要求的線路的最小花費。
樣例輸入
14 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,...