swustoj求最小生成树(Prim算法)(1075)
2017-04-18 17:01
357 查看
求出给定无向带权图的最小生成树。图的定点为字符型,权值为不超过100的整形。在提示中已经给出了部分代码,你只需要完善Prim算法即可。
Description
第一行为图的顶点个数n
第二行为图的边的条数e
接着e行为依附于一条边的两个顶点和边上的权值
Input
最小生成树中的边。
Output
Sample Input
Description
第一行为图的顶点个数n
第二行为图的边的条数e
接着e行为依附于一条边的两个顶点和边上的权值
Input
最小生成树中的边。
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 | 6 10 ABCDEF A B 6 A C 1 A D 5 B C 5 C D 5 B E 3 E C 6 C F 4 F D 2 E F 6 |
1 | (A,C)(C,F)(F,D)(C,B)(B,E) |
#include<stdio.h> #include<algorithm> #include<string.h> #include<iostream> using namespace std; char str[1000]; int mp[105][105]; int vis[105]; int n,e; void prim() { int lowcost[105];//用来存从0到每个点的距离 int close[105];//close[1]=2 表示离点1最近的点是点2 for(int i=0;i<n;i++) { lowcost[i]=mp[0][i]; close[i]=0; } for(int i=1;i<n;i++) { int _min=9999999; int _minid=-1; for(int j=0;j<n;j++) { if(lowcost[j]!=0&&lowcost[j]<_min) { _min=lowcost[j]; _minid=j; } } printf("(%c,%c)",str[close[_minid]],str[_minid]);//找到最小值输出 lowcost[_minid]=0; for(int j=0;j<n;j++)//更新值 { if(mp[_minid][j]!=0&&mp[_minid][j]<lowcost[j]) { lowcost[j]=mp[_minid][j]; close[j]=_minid; } } } } int main() { cin>>n>>e; cin>>str; for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) { mp[i][j]=i==j?0:9999999; } } for(int i=0;i<e;i++) { char a,b; int c; cin>>a>>b>>c; mp[a-'A'][b-'A']=mp[b-'A'][a-'A']=c; } prim(); return 0; }
相关文章推荐
- 求最小生成树(Prim算法)(1075)
- 最小生成树(prim算法模板,选点,oj2144)
- 求最小生成树(Prim算法)(1075)
- prim算法 求最小生成树 1075
- 求最小生成树(Prim算法)(1075)
- 最小生成树-Prim算法(模板)
- hdu 还是畅通工程 (基础)(最小生成树)(Prim算法 && Kruskal算法)
- hdu 畅通工程再续(最小生成树)(Prim算法 && Kruskal算法)
- 最小生成树------Prim算法
- 【算法和数据结构】图(二)最小生成树之Prim算法(C++实现)
- POJ 1258 Agri-Net(最小生成树Prim算法)
- Prim算法最小生成树
- [算法与数据结构] - No.9 图论(2)- 最小生成树Prim算法与Kruskal算法
- 最小生成树之prim算法
- 最小生成树Prim算法实现
- python最小生成树kruskal与prim算法
- MST(最小生成树)——Prim算法——HDU 1879-继续畅通工程
- 求解最小生成树的算法 prim算法(附模板)
- hdu1233最小生成树 prim算法模板
- 最小生成树和prim算法