nyoj 38 简单并查集的应用&最小生成树
2014-05-20 19:55
357 查看
#include<stdio.h> #include<stdlib.h> #define inf 0x3fffffff #define N 600 struct node { int x,y,w; }ma[N*N]; int cmp(const void *a,const void *b) { return (*(struct node *)a).w-(*(struct node *)b).w; } int pre ; int find(int x) { if(x!=pre[x]) pre[x]=find(pre[x]); return pre[x]; } int main() { int t,n,m,i,j,k,aa,bb; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<m;i++) scanf("%d%d%d",&ma[i].x,&ma[i].y,&ma[i].w); qsort(ma,m,sizeof(ma[0]),cmp); k=0; for(i=1;i<=n;i++) pre[i]=i; for(i=0;i<m;i++) { aa=find(ma[i].x); bb=find(ma[i].y); if(aa!=bb) { pre[aa]=bb; k+=ma[i].w; } } j=inf; for(i=0;i<n;i++) { scanf("%d",&m); if(m<j) j=m; } printf("%d\n",j+k); } return 0; }
相关文章推荐
- nyoj 38 简单并查集的应用&最小生成树
- NYOJ 38 布线问题(带权最小生成树,并查集)
- Nyoj 38 布线问题[最小生成树(Prim&&Kruscal)]
- 并查集-用并查集判断图中是否有环(能够应用到kruskal的最小生成树)
- POJ 1789 Truck History【最小生成树简单应用】
- 【待修改】nyoj 38 最小生成树
- HDU 2818&&POJ 1988 并查集简单应用
- HDU1598 find the most comfortable road (最小生成树,并查集的应用)
- Nyoj 434&&Hud 1301 Jungle Roads[最小生成树Kruscal]
- HDU 2818&&POJ 1988 并查集简单应用
- NYOJ-38 布线问题(图论,最小生成树,Prime)
- HDU--1233:还是畅通工程 (并查集 & 最小生成树Prim)
- 最小生成树&并查集POJ 1287 Networking
- NYOJ 38-布线问题:最小生成树
- HDU-1233 还是畅通工程(最小生成树&并查集)
- 并查集及其应用——kruscal法求最小生成树
- 并查集-用并查集判断图中是否有环(能够应用到kruskal的最小生成树)
- NYOJ 38最小生成树布线问题
- POJ 1789 Truck History【最小生成树简单应用】
- hdu-1863畅通工程 最小生成树克鲁斯卡尔算法kruskal(并查集实现)&&prim普利姆算法实现