数据结构实验之图论九:最小生成树
来源:互联网 发布:人工智能 语音唤醒 编辑:程序博客网 时间:2024/06/13 21:48
数据结构实验之图论九:最小生成树
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。
Input
输入包含多组数据,格式如下。
第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000)
剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c。
Output
每组输出占一行,仅输出最小花费。
Example Input
3 21 2 11 3 11 0
Example Output
20
Hint
方法一:
#include<bits/stdc++.h> using namespace std; #define Max 0x3f3f3f3f int n, m, s; int vis[101], dis[101]; int a[101][101]; void prim() { int ml, k, i, j; vis[1] = 1; for(i = 2; i <= n; i++) dis[i] = a[i][1]; for(i = 1; i < n; i++) { ml = Max; for(j = 1; j <= n; j++) { if(!vis[j]&&ml>dis[j]) { ml = dis[j]; k = j; } } s += ml; vis[k] = 1; for(j = 2; j <= n; j++) { if(!vis[j]&&a[j][k]<dis[j]) { dis[j] = a[j][k]; } } } } int main() { int x, y, c, i; while(~scanf("%d%d", &n, &m)) { s = 0; if(m<n-1) { cout<<"0"<<endl; continue; } memset(a, Max, sizeof(a)); memset(vis, 0, sizeof(vis)); for(i = 1; i <= n; i++) a[i][i] = 0; for(i = 0; i < m; i++) { cin>>x>>y>>c; if(a[x][y]>c) a[x][y] = a[y][x] = c; } prim(); cout<<s<<endl; } }
方法二:并查集
#include<bits/stdc++.h>using namespace std;int n, m, dis[1100], num;struct st{ int a, b, c;}s[10001];bool cmp(st p, st q){ return p.c<q.c;}int Find(int x){ return dis[x] == x ? x : Find(dis[x]);}int kruskal(){ int x, y, i, k; k = 0; for(i = 0; i < m; i++) { x = Find(s[i].a); y = Find(s[i].b); if(x!=y) { dis[x] = y; num += s[i].c; k++; } if(k==n-1) break; } /*for(i = 1; i <= n; i++) { if(dis[i]==i) k++; }*/ if(k==n-1) return 1; else return 0;}int main(){ int i, k; while(~scanf("%d%d", &n, &m)) { num = 0; for(i = 0; i < m; i++) { scanf("%d%d%d", &s[i].a, &s[i].b, &s[i].c); } for(i = 0; i<= n; i++) dis[i] = i; sort(s, s+m, cmp); k = kruskal(); if(k) cout<<num<<endl; else cout<<0<<endl; }}
阅读全文
0 0
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 数据结构实验之图论九:最小生成树
- 2144 数据结构实验之图论九:最小生成树
- 2144-数据结构实验之图论九:最小生成树
- SSM+Maven整合
- 王垠回国商业计划:新型数据库、智商税、城市设计和家居设计顾问、非技术书籍
- ###SVN使用全过程(文字笔记):上传项目+下载项目+团队开发
- Alsa 配置文件 – Asoundrc
- 1. Two Sum
- 数据结构实验之图论九:最小生成树
- 在C++编程中srand((unsigned int)(time(NULL)))这句代码的解读
- 15-常用对象API(集合框架-ArrayList集合存储自定对象) 1 2 3 16-常用对象API(集合框架-HashSet集合) 19-常用对象API(集合框架-HashSet存储自定义
- Luogu11月月赛T1 高兴的津津
- 总架构师眼里的架构和架构师的成长之道
- Python 练习实例13
- 解决Chrome 打开时“发生个人资料错误”和安装失败0xa0430721
- 转载大神的对雅可比矩阵和海森矩阵的讲解
- mongodb学习笔记二