#1109 : 最小生成树三·堆优化的Prim算法
来源:互联网 发布:域名年费多少钱 编辑:程序博客网 时间:2024/06/05 18:36
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
5 291 2 6742 3 2493 4 6724 5 9331 2 7883 4 1472 4 5043 4 381 3 653 5 61 5 8651 3 5901 4 6822 4 2272 4 6361 4 3121 3 1432 5 1582 3 5163 5 1021 5 6051 4 994 5 2242 4 1983 5 8941 5 8453 4 72 4 141 4 185
- 样例输出
92
题解:其实和克鲁斯卡尔的思想一样的,每次都查找最小边。由于使用了优先队列,排序了使得复杂度降为了nlogn。
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int INF = 100005;struct Node{int to;int dis;Node(int a,int b){to = a; //邻接点 dis = b;} bool operator< (Node t) const //排序 { return dis > t.dis;}};vector<Node> vec[INF];priority_queue<Node> q;bool visited[INF];void prime(int& ans,int n){for(int i = 0;i < vec[1].size();i++) //与1相连的入队 {q.push(vec[1][i]);}visited[1] = true;for(int i = 1;i < n;i++) //n-1条边 {while(!q.empty()) //每次找边最小的 {Node t = q.top();q.pop();if(visited[t.to]){continue;}ans += t.dis;visited[t.to] = true;for(int j = 0;j < vec[t.to].size();j++) //更新队列 {Node p = vec[t.to][j];if(!visited[p.to]){q.push(p);}}break;}}printf("%d\n",ans);for(int i = 1;i <= n;i++){vec[i].clear();}while(!q.empty()){q.pop();}}int main(){int n,m;int u,v,dis;cin>>n>>m;for(int i = 0;i < m;i++){scanf("%d%d%d",&u,&v,&dis);vec[u].push_back(Node(v,dis));vec[v].push_back(Node(u,dis));}memset(visited,false,sizeof(visited));int ans = 0;prime(ans,n);return 0;}
描述
回到两个星期之前,在成功的使用Kruscal算法解决了问题之后,小Ho产生了一个疑问,究竟这样的算法在稀疏图上比Prim优化之处在哪里呢?
提示:没有无缘无故的优化!输入
每个测试点(输入文件)有且仅有一组测试数据。
在一组测试数据中:
第1行为2个整数N、M,表示小Hi拥有的城市数量和小Hi筛选出路线的条数。
接下来的M行,每行描述一条路线,其中第i行为3个整数N1_i, N2_i, V_i,分别表示这条路线的两个端点和在这条路线上建造道路的费用。
对于100%的数据,满足N<=10^5, M<=10^6,于任意i满足1<=N1_i, N2_i<=N, N1_i≠N2_i, 1<=V_i<=10^3.
对于100%的数据,满足一定存在一种方案,使得任意两座城市都可以互相到达。
输出
对于每组测试数据,输出1个整数Ans,表示为了使任意两座城市都可以通过所建造的道路互相到达至少需要的建造费用。
0 0
- #1109 : 最小生成树三·堆优化的Prim算法
- hihoCoder 1109 最小生成树三·堆优化的Prim算法
- hihocoder #1109最小生成树三·堆优化的Prim算法
- HIHO #1109 : 最小生成树三·堆优化的Prim算法
- hihocoder 1109 : 最小生成树三·堆优化的Prim算法
- hiho一下 第二十八周 最小生成树三·堆优化的Prim算法
- hiho 29 最小生成树三·堆优化的Prim算法
- 最小生成树Prim算法 堆优化
- 最小生成树 堆优化的Prim算法
- hiho刷题日记——第二十九天最小生成树三·堆优化的Prim算法
- 【模板】Prim+堆优化 最小生成树
- 最小生成树Prim算法的priority_queue优化
- 最小生成树(二)--prim算法实现以及堆优化
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- hdu1233 还是畅通工程 最小生成树 Prim算法堆优化
- Prim 算法生成的最小生成树
- 洛谷3366 最小生成树(Prim + 堆优化)
- 最小生成树---prim模板(二叉堆优化)
- Android—开发自学历程(3)-多线程
- app运行中点击home后再次点击app图标进入应用时重复登录的方法()
- Cocos2d-x精灵学习笔记
- Network
- test
- #1109 : 最小生成树三·堆优化的Prim算法
- 在Windows中配置PHP的OpenSSL模块
- 在iOS 7中使用storyboard(part 1)
- android 获取短信 通讯录 电话记录
- PHP之cookie详解
- 二分图----最大匹配,最小点覆盖,最大点独立集
- 身为一个程序媛的深刻自我检讨
- phpMyadmin 修改上传文件大小限制
- 在线HTTP POST/GET接口测试工具 - aTool在线工具