CH6_30.TXT
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. void minitree_KRUSKAL(void)
  2. {   int n,i,m,min,k,j;
  3.     VEX t[M];
  4.     EDGE  e[M];
  5.     printf("Input number of vertex and edge:");
  6.     scanf("%d,%d",&n,&m);
  7.     for(i=1;i<=n;i++)
  8.     {   printf("t[%d].data=:",i);
  9. scanf("%d",&t[i].data);
  10. t[i].jihe=i;
  11.     }
  12.     for(i=0;i<m;i++)
  13.     {   printf("vexh,vext,weight:");
  14. scanf("%d,%d,%d",&e[i].vexh,&e[i].vext,&e[i].weight);
  15. e[i].flag=0;
  16.     }
  17.     i=1;
  18.     while(i<n)
  19.     {   min=MAX;
  20. for(j=0;j<m;j++)
  21. {  if(e[j].weight<min && e[j].flag==0)
  22.    {   min=e[j].weight;
  23.        k=j;
  24.    }
  25. }
  26. if(t[e[k].vexh].jihe!=t[e[k].vext].jihe)
  27. {    e[k].flag=1;
  28.      for(j=1;j<=n;j++)
  29. if(t[j].jihe==t[e[k].vext].jihe)
  30.    t[j].jihe=t[e[k].vexh].jihe;
  31.      t[e[k].vext].jihe=t[e[k].vexh].jihe;
  32.      i++;
  33. }
  34. else
  35.    e[k].flag=2;
  36.     }
  37.     for(i=0;i<m;i++)
  38.        if(e[i].flag==1)
  39.  printf("%d,%d :%dn",e[i].vexh,e[i].vext,e[i].weight);
  40. }