prim.txt
上传用户:whdzzsj
上传日期:2013-02-04
资源大小:1k
文件大小:1k
源码类别:

源码/资料

开发平台:

C/C++

  1. # include <stdio.h>
  2. # define inf 1000
  3. # define max  50
  4. prim(int g[][max],int n)
  5. {
  6. int lowcost[max],closest[max];
  7. int i,j,k,min;
  8. for(i=2;i<=n;i++)
  9. {
  10. lowcost[i]=g[1][i];
  11. closest[i]=1;
  12. }
  13. lowcost[1]=0;
  14. for(i=2;i<=n;i++)
  15. {
  16. min=inf;
  17. k=0;
  18. for(j=2;j<=n;j++)
  19. if((lowcost[j]<min)&&(lowcost[j]!=0))
  20. {
  21. min=lowcost[j];
  22. k=j;
  23. }
  24. printf("(%d,  %d),    %dt",closest[k],k,min );
  25. lowcost[k]=0;
  26. for(j=2;j<=n;j++)
  27. if(g[k][j]<lowcost[j])
  28. {
  29. lowcost[j]=g[k][j];
  30. closest[j]=k;
  31. }
  32. printf("n");
  33. }
  34. }
  35. int adjg(int g[][max])
  36. {
  37. int n,i,j,v1,v2,wei;
  38. printf("all point=");
  39. scanf("%d",&n);
  40. for(i=1;i<=n;i++)
  41. for(j=1;j<=n;j++ )
  42. g[i][j]=inf;
  43. printf("point point quann");
  44. do
  45. {
  46. scanf("%d   %d   %d",&v1,&v2,&wei);
  47. g[v1][v2]=wei;
  48. g[v2][v1]=wei;
  49. }while(v1!=0 && v2!=0 && wei!=0);
  50. return(n);
  51. }
  52. main()
  53. int g[max][max],n;
  54. n=adjg(g);
  55. printf("small tree:n");
  56. prim(g,n);
  57. }