WUST 1944 最短网络Agri-Net(最小生成树之prim算法)
来源:互联网 发布:法棍 知乎 编辑:程序博客网 时间:2024/06/10 15:41
1944: 最短网络Agri-Net
Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lldSubmitted: 22 Accepted: 9
[Submit][Status][Web Board]
Description
农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000。
Input
多组测试数据。
第一行:农场的个数,N(3<=N<=100)。
后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。N行,每行由N个用空格分隔的数组成。
当然,对角线将会是0,因为不会有线路从第i个农场到它本身。
Output
只有一个输出,其中包含连接到每个农场的光纤的最小长度。
Sample Input
40 4 9 214 0 8 179 8 0 1621 17 16 0
Sample Output
28
题解:
比较水,看到给了邻接矩阵就想到用prim算法,算是prim算法练练手,就是随便找个点作为起始点,然后加入全家桶套餐,vis标记为1,遍历这个点所有另一端没加入全家桶套餐的边,加入优先队列(值小的先出),然后取出另一端没加入套餐且最小值的边,另一个点加入全家桶套餐,然后和刚才一样循环。。知道找完所有的点
代码:
#include<algorithm>#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<string>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<deque>using namespace std;const int INF=100861111;int vis[105];struct edge{ int to;//该边通向的地方 int v;//边的值 friend bool operator<(edge x,edge y)//优先队列重载小于号,值小的点pop { return x.v>y.v; }};priority_queue<edge>q;int p[105][105];int main(){ int i,j,k,n,m,ans,s; edge now; while(scanf("%d",&n)!=EOF) { s=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&p[i][j]); } vis[i]=0;//初始化 } while(!q.empty())q.pop(); int key=0; ans=1; vis[0]=1; while(ans<n)//早足了点就退 { for(i=0;i<n;i++) { if(!vis[i]) { now.to=i; now.v=p[key][i]; q.push(now); } } while(!q.empty()&&vis[q.top().to])q.pop();//把已经加入全家桶套餐的边pop掉 now=q.top(); s+=now.v; ans++; key=now.to; vis[key]=1; } printf("%d\n",s); } return 0;}
阅读全文
0 0
- WUST 1944 最短网络Agri-Net(最小生成树之prim算法)
- 【USACO】Agri-Net最短网络(最小生成树)
- USACO 3.1.1 Agri-Net 最短网络(最小生成树Prime算法)
- 最短网络(Prim算法最小生成树)
- 【最小生成树】Agri-Net最短网络
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- [最小生成树]USACO 3.1 Agri-Net 最短网络
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)
- 【最小生成树】洛谷 P1546 最短网络 Agri-Net
- USACO 3.1 Agri-Net 最短网络 (最小生成树)(普里姆算法)
- USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)
- 【Spring】——聊一聊AOP
- BOOST UDP 网络通信(1)
- 2017.7.15 NOIP模拟
- UVa 11427 Expect the Expected
- Git配置及使用
- WUST 1944 最短网络Agri-Net(最小生成树之prim算法)
- node.js---study1 实现一个简单应用,登录,session
- [Microsoft] Search a 2D Matrix
- JDK 1.5-1.8特性
- 基于NRF51822实现触摸按键方案
- Linux 文件基本属性以及操作技巧
- static 关键字
- activity表创建
- 基于TCP协议用多线程实现并发服务器,实现思路、算法和demo