HDOJ1102 修路问题(最小生成树-Prim)
2012-10-09 16:26
399 查看
题目:
1102 | Constructing Roads |
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define M 100 #define MAX 9999 int map[M][M],visited[M],adjset[M]; int n,p,len; void ReadMap(); void main() { int i,j,nlen,nid; while (scanf("%d",&n)!=EOF) { //读取地图 ReadMap(); //初始化 memset(visited,0,sizeof(visited)); visited[0] = 1; len = 0; for (i=0;i<n;i++) adjset[i] = map[i][0]; //Begin for (i=1;i<n;i++) { //找到下一条符合条件的点 nlen = MAX; for (j=0;j<n;j++) { if (!visited[j] && adjset[j]<nlen) { nlen = adjset[j]; nid = j; } } //访问找到的那个点 len += nlen; visited[nid] = 1; //更新邻接距离 for (j=0;j<n;j++) { if (!visited[j] && map[j][nid]<adjset[j]) { adjset[j] = map[j][nid]; } } } cout<<len<<endl; } } void ReadMap() { int i,j,a,b; for (i=0;i<n;i++) { for (j=0;j<n;j++) { cin>>map[i][j]; } } cin>>p; for (i=0;i<p;i++) { cin>>a>>b; map[a-1][b-1] = map[b-1][a-1] = 0; } }
相关文章推荐
- HDOJ 1102 Constructing Roads 最小生成树 kruskal && Prim
- 修路问题-最小生成树 Prim&Kruscal
- HDOJ题目1102Constructing Roads(最小生成树,prim)
- hdoj 1102 Constructing Roads 【最小生成树&&prim】
- nuoj 38布线问题(prim最小生成树)
- HDOJ 1875 畅通工程再续 最小生成树 kruskal && prim
- HDOJ 1102 Constructing Roads(最小生成树)
- hdoj1102 Constructing Roads(最小生成树)
- HDOJ 5723 prim最小生成树+dfs树上平均点距
- HDOJ 1233 还是畅通工程 【最小生成树】+【prim】
- HDOJ 1863 畅通工程 最小生成树 kruskal && prim
- HDOJ 题目1301 Jungle Roads(最小生成树,prim)
- HDOJ 1102 Constructing Roads(最小生成树)
- POJ 2421 HDOJ 1102 Constructing Roads(kuangbin带你飞 专题六:最小生成树)
- hdoj-1102-Constructing Roads【最小生成树】
- HDU-1102(prim求最小生成树)
- HDU 1102 Constructing Roads(Prim求最小生成树)
- 修路问题(最小生成树)
- HDU 1102 最小生成树 prim
- hdu 1102 Constructing Roads(最小生成树 Prim)