本文共 2070 字,大约阅读时间需要 6 分钟。
嗯,写最小生成树终于有感觉了,一次就AC了,比前两道好多了,不过,这次我没有用qsort,还是用了一般的排序,看来qsort是得好好学学了,这样,我的代码可以短很多,看着也会舒服了。。。#include呵呵,不错不错,我改了一下,把qsort加了进去,没出现让人头疼的Floating Point Error ,这样代码看着就舒服了。。#include typedef struct{ int x,y; double w;}NODE; NODE node[10000];int pre[5000];void change1(int *x,int *y) { int t; t=*x; *x=*y; *y=t; } void change2(double *x,double *y){ double t; t=*x; *x=*y; *y=t; }int find(int x){ while(x!=pre[x]) x=pre[x]; return x;} void kruskal(int k,double total){ int i,j,a,b,h; double sum=0.0; for(i=0;i node[j].w) h=j; if(h!=i) { change1(&node[i].x,&node[h].x); change1(&node[i].y,&node[h].y); change2(&node[i].w,&node[h].w); } } for(i=0;i total) printf("Not enough cable\n"); else printf("Need %.1lf miles of cable",sum); }int main(){ double total; int i,j,house,paths,k; char a[5000][25],b[25],c[25]; scanf("%lf%d",&total,&house); for(i=1;i<=house;i++) pre[i]=i; for(i=1;i<=house;i++) scanf("%s",a[i]); scanf("%d",&paths); for(i=0;i
#include#include typedef struct{ int x,y; double w;}NODE; NODE node[10000];int pre[5000];int cmp(const void *a,const void *b) { return ((NODE*)a)->w > ((NODE*)b)->w ? 1 : -1; } int find(int x){ while(x!=pre[x]) x=pre[x]; return x;} void kruskal(int k,double total){ int i,j,a,b,h; double sum=0.0; qsort(node,k,sizeof(NODE),cmp); for(i=0;i total) printf("Not enough cable\n"); else printf("Need %.1lf miles of cable",sum); }int main(){ double total; int i,j,house,paths,k; char a[5000][25],b[25],c[25]; scanf("%lf%d",&total,&house); for(i=1;i<=house;i++) pre[i]=i; for(i=1;i<=house;i++) scanf("%s",a[i]); scanf("%d",&paths); for(i=0;i
转载地址:http://pasfb.baihongyu.com/