修路问题(最小生成树-Prim)

简介:

题目:

1102 Constructing Roads
复制代码
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 
 6 #define M 100
 7 #define MAX 9999
 8 
 9 int map[M][M],visited[M],adjset[M];
10 int n,p,len;
11 
12 void ReadMap();
13 
14 void main()
15 {
16     int i,j,nlen,nid;
17     while (scanf("%d",&n)!=EOF)
18     {
19         //读取地图
20         ReadMap();
21         //初始化
22         memset(visited,0,sizeof(visited));
23         visited[0] = 1;
24         len = 0;
25         for (i=0;i<n;i++)    adjset[i] = map[i][0];
26         //Begin
27         for (i=1;i<n;i++)
28         {
29             //找到下一条符合条件的点
30             nlen = MAX;
31             for (j=0;j<n;j++)
32             {
33                 if (!visited[j] && adjset[j]<nlen)
34                 {
35                     nlen = adjset[j];
36                     nid = j;
37                 }
38             }
39             //访问找到的那个点
40             len += nlen;
41             visited[nid] = 1;
42             //更新邻接距离
43             for (j=0;j<n;j++)
44             {
45                 if (!visited[j] && map[j][nid]<adjset[j])
46                 {
47                     adjset[j] = map[j][nid];
48                 }
49             }
50         }
51         cout<<len<<endl;
52     }
53 }
54 
55 void ReadMap()
56 {
57     int i,j,a,b;
58     for (i=0;i<n;i++)
59     {
60         for (j=0;j<n;j++)
61         {
62             cin>>map[i][j];
63         }
64     }
65     cin>>p;
66     for (i=0;i<p;i++)
67     {
68         cin>>a>>b;
69         map[a-1][b-1] = map[b-1][a-1] = 0;
70     }
71 }
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/10/09/2716975.html,如需转载请自行联系原作者

相关文章
|
10月前
|
算法 C++
用prim和kruskal算法求最小生成树问题
用prim和kruskal算法求最小生成树问题
72 0
|
机器学习/深度学习 算法 程序员
【算法合集】深搜广搜Prim与Kruskal
广度优先搜索(BFS)又叫广搜,它像一个有远见的人,它是一层一层来实现搜索的,也挺像下楼梯的。 思路: 1.先初始化队列 q; 2.从起点开始访问,并且改变他的状态为已经访问; 3.如果他的队列非空,取出首个元素,将它弹出! 4.如果u == 目标状态,然后对所以与 u 邻近的点进入队列; 5.标记它已经被访问!...............
155 1
【算法合集】深搜广搜Prim与Kruskal
|
算法 调度
最小生成树(Prim、Kruskal)算法,秒懂!
在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法。但是可能很多人对概念不是很清楚,什么是最小生成树?
158 0
最小生成树(Prim、Kruskal)算法,秒懂!
Floyd-Warshall算法 五行解决 (最短路径)
Floyd-Warshall算法 五行解决 (最短路径)
Floyd-Warshall算法 五行解决 (最短路径)
|
存储 算法
Kruskal
复习acwing算法基础课的内容,本篇为讲解基础算法:Kruskal,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
90 0
Kruskal
|
算法
图论最短路及生成树(Prim,Djikstra,Spfa,Bellan-ford,kruskal,topsort)
图论最短路及生成树(Prim,Djikstra,Spfa,Bellan-ford,kruskal,topsort)
134 1