[2017纪中10-30]Graph 最小生成树
2017-10-30 19:16
375 查看
题面
先给边排序,枚举最小边,按顺序加比它大的边,直到合并了n-1次计算答案即可。
代码:
先给边排序,枚举最小边,按顺序加比它大的边,直到合并了n-1次计算答案即可。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int inf=1e9; int n,m,fa[1010]; struct node { int x,y,w; }e[4010]; bool cmp(node a,node b) { return a.w<b.w; } int getfa(int v) { if(fa[v]==v) return v; fa[v]=getfa(fa[v]); return fa[v]; } int main() { int ca; scanf("%d",&ca); while(ca--) { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w); sort(e+1,e+m+1,cmp); int ans=inf,cnt; for(int i=1;i<=m;i++) { cnt=0; for(int j=1;j<=n;j++) fa[j]=j; for(int j=i;j<=m;j++) if(getfa(e[j].x)!=getfa(e[j].y)) { fa[getfa(e[j].x)]=getfa(e[j].y); cnt++; if(cnt==n-1){ans=min(ans,e[j].w-e[i].w);break;} } } if(ans>=inf) puts("-1"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- 图(Graph)——最小生成树、最短路径、Kruskal、Dijkstra、Floyd
- [2017纪中11-2]失格 最小生成树+数论
- Graph的算法实现: 寻找一幅图的最小生成树(MST)
- Graph java 实现最小生成树
- 2015_1_4_graph_最小生成树
- The minimum spanning tree of a graph(图的最小生成树)
- [最小生成树] Codeforces 632F Educational Codeforces Round 9 F. Magic Matrix & SRM 687 div1 AllGraphCuts
- HPU图论专项(graph)【拓扑--二分图--最小生成树---树的直径---并查集--奇偶树---最小环---强联通】
- [2017纪中10-28]图 最小生成树+LCT
- 算法:图(Graph)的遍历、最小生成树和拓扑排序
- 边的权重都不相同,如何证明在这个graph里面只存在一棵最小生成树
- 最小生成树普里姆算法--C语言实现
- 最小生成树--prim算法的c语言描述
- 最小生成树——Prim算法
- 还是畅通工程(最小生成树模板题)
- 课程设计 自来水管道 最小生成树树模版 .
- 并查集&最小(最大)生成树
- POJ-1789 Truck History(prim算法,最小生成树)
- HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)
- 文章标题 HDU 3371 : Connect the Cities(最小生成树--Kruskal+并查集)