zoj 2326
2011-08-19 17:56
204 查看
最小生成树题目……
#include<stdio.h> #include<stdlib.h> #include<string.h> struct paths { char x[21]; char y[21]; float dis; }path[400]; int cmp(const void *a,const void *b) //这里注意啦,qsort返回值是int型的,必然不能返回两数的差值!!! { return (*(struct paths*)a).dis>(*(struct paths*)b).dis?1:-1; } int find(int x,int *father) { if(father[x]==x) return x; else return find(father[x],father); } int main() { int m,n,j,father[400],i,A,B; char a[400][21]; float len,count; scanf("%f",&len); scanf("%d",&n); for(i=0;i<n;i++) scanf("%s",a[i]); for(i=0;i<n;i++) father[i]=i; scanf("%d",&m); for(i=0;i<m;i++) scanf("%s%s%f",&path[i].x,&path[i].y,&path[i].dis); qsort(path,m,sizeof(path[0]),cmp); for(i=0,count=0;i<m;i++) { for(j=0;j<n&&strcmp(a[j],path[i].x)!=0;j++) {} A=find(j,father); for(j=0;j<n&&strcmp(a[j],path[i].y)!=0;j++) {} B=find(j,father); if(A!=B) { father[A]=B; count+=path[i].dis; } } if(count<=len) printf("Need %.1f miles of cable\n",count); else printf("Not enough cable\n"); return 0; }
相关文章推荐
- zoj 2326
- zoj 2326 Tangled in Cables
- POJ1083 HDU1050 ZOJ1029 UVALive2326 Moving Tables【序列+最值】
- zoj 2326 Tangled in Cables 最小生成树
- ZOJ-2326
- zoj 2326 Tangled in Cables
- ZOJ 2326 Tangled in Cables
- zoj 2326 Tangled in Cables【kruskal】
- zoj 2326 Tangled in Cables【最小生成树 kruskal && prim】
- zoj 2326 || poj 2075 Tangled in Cables(MST)
- ZOJ 2326 Tangled in Cables(最小生成树--prime)
- ZOJ Problem Set–1860 Dog & Gopher
- zoj 1008 DFS+剪枝(小坑爹的剪枝)
- 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
- zoj 3874 Permutation Graph
- fire net(zoj1002)
- ZOJ 1879 — Jolly Jumpers(C++)
- ZOJ2112 Dynamic Rankings(整体二分)
- ZOJ 1654--Place the Robots【二分匹配 && 经典建图】
- 实力在于积累 ACM-ZOJ 1130