hdu 1879 继续畅通工程

来源:互联网 发布:苹果怎么快捷打开数据 编辑:程序博客网 时间:2024/05/02 00:55

多实例测试,num没有初始化,Runtime Error(ACCESS_VIOLATION)   N次

#include<stdio.h>#include<stdlib.h>struct bian{int x,y,w;}b[5010];int ji[110];int n,m,num=0,l;int cmp(const void *a,const void *b){struct bian *c=(struct bian *)a,*d=(struct bian *)b;return c->w-d->w;}int root(int i){while(ji[i]!=i)i=ji[i];return i;}int kruskal(){int i=0,xx,yy,max=0;while(l!=n){xx=root(b[i].x);yy=root(b[i].y);while(xx==yy){i++;xx=root(b[i].x);yy=root(b[i].y);}max+=b[i].w;if(xx<yy)ji[yy]=xx;else ji[xx]=yy;l++;}return max;}int main(){int i,x,y,w,bd,xx,yy;while(scanf("%d",&n),n){m=n*(n-1)/2;l=1;num=0;for(i=1;i<=n;i++)ji[i]=i;for(i=1;i<=m;i++){scanf("%d%d%d%d",&x,&y,&w,&bd);if(bd){l++;xx=root(x);yy=root(y);if(yy>xx)ji[yy]=xx;else ji[xx]=yy;}else{b[num].x=x;b[num].y=y;b[num++].w=w;}}qsort(b,num,sizeof(b[0]),cmp);printf("%d\n",kruskal());}return 0;}


 

#include<stdio.h>#include<string.h>int n,m;int map[110][110],vis[110],dist[110];int zhao(){int i,xia=-1;for(i=1;i<=n;i++)if(vis[i]==0&&(xia==-1||dist[i]<dist[xia]))xia=i;return xia;}void geng(int j){int i;for(i=1;i<=n;i++)if(vis[i]==1&&map[i][j]<dist[j])dist[j]=map[i][j];}int prim(){int i,j,xia,max=0,l=1;memset(vis,0,sizeof(vis));vis[1]=1;for(i=1;i<=n;i++)dist[i]=map[1][i];while(l!=n){xia=zhao();vis[xia]=1;max+=dist[xia];for(j=1;j<=n;j++)if(vis[j]==0)geng(j);l++;}return max;}int main(){int i,x,y,w,b;while(scanf("%d",&n),n){m=n*(n-1)/2;for(i=1;i<=m;i++){scanf("%d%d%d%d",&x,&y,&w,&b);if(b)map[x][y]=map[y][x]=0;else map[x][y]=map[y][x]=w;map[x][x]=0;}printf("%d\n",prim());}return 0;}


 

原创粉丝点击