ZOJ 2966 Build The Electric System(最小生成树)
2016-02-19 17:30
351 查看
题目链接:http://vj.hsacm.com/problem/visitOriginUrl.action?id=74919
思路:裸prim算法 水题
思路:裸prim算法 水题
#include<string> #include<string.h> #include<cstring> #include<vector> #include<map> #include<queue> #include<stack> #include<cctype> #define mt(a) memset(a,0,sizeof a) #define fl(a,b,c) fill(a,b,c) #define inf 1000000000+7 using namespace std; typedef long long ll; int n, m; ll graph[550][550]; int vis[550] ; ll dis[550]; ll ans = 0; ll prim() { ll i, j, pos, min, result = 0; memset(vis, 0, sizeof vis); fill(dis, dis + 550, inf); vis[0] = 1; pos = 0; dis[0] = 0; for (i = 0; i < n; i++) if (i != pos) dis[i] = graph[pos][i]; for (i = 0; i<n-1; i++) { min = inf; for (j = 0; j < n; j++) if (vis[j] == 0 && min>dis[j]) { min = dis[j]; pos = j; } result += min; vis[pos] = 1; for (j = 0; j < n; j++) if (vis[j] == 0 && dis[j]>graph[pos][j]) dis[j] = graph[pos][j]; } return result; } int main() { int T; cin >> T; while (T--) { scanf("%d %d", &n, &m); for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++)graph[i][j] = inf; } memset(vis, 0, sizeof vis); for (int i = 0; i < m; i++) { int x, y, k; scanf("%d %d %lld", &x, &y, &k); graph[x][y] = k; graph[y][x] = k; } ans = prim(); printf("%lld\n", ans); } return 0; }
相关文章推荐
- iOS设计UI工具大全
- 14.UITextField内容缩进/placeholder改变颜色
- UIbutton 防止重复点击
- No location, value may have been optimized out
- UITableView回滚到顶部的几种方法
- 深入学习:NSOperationQueue, NSRunLoop和线程安全
- ReferenceQueue
- UI总结
- UIButton.titleLabel.text和[UIButton setTitle:],UIButton.imageView.image和[UIButton setImage]的区别
- UICollectionView
- UISlider增加触动区域
- UICollectionView
- UIScrollView的三个属性
- WinCE Overlay - 示例:mosquito
- 22个值得收藏的android开源代码-UI篇
- 毕业设计(二十)---使用easyUI dialog 对话框做登陆弹出 表单验证
- 13.UILabel 中的一些属性
- Multiple build commands for output file
- 使用BlockingQueue实现包饺子( 生产者做面皮,消费者拿面皮包饺子)简单使用
- 《代码大全》之错误处理技术(Error-Handling Techniques)