Advertisement
Guest User

prim

a guest
May 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<stdbool.h>
  4. int main()
  5. {
  6. int n;
  7. printf("insert the number of ver :");
  8. scanf("%d",&n);
  9. int x[n][n];
  10. bool visited [n];
  11. int nedges=0;
  12. int tw = 0;
  13. int i=0, j=0;
  14.  
  15. for (i=0;i<n;i++)
  16. { j=0;
  17.  
  18. for (j=j+i;j<n;j++)
  19. {
  20.  
  21. if(i==j)
  22. {
  23. x[i][j]=0;
  24. }else
  25. {
  26. printf("\n enter the weight of the edge from %d to %d \n ",i,j);
  27. scanf("%d",&x[i][j]);
  28. //x[i][j]= rand()%999;
  29. x[j][i]=x[i][j];
  30. }
  31.  
  32. }
  33. }
  34. for (i=0;i<n;i++)
  35. {
  36. visited [i]=false;
  37. for (j=0;j<n;j++)
  38. {
  39. printf("%d \t",x[i][j]);
  40. }
  41. printf("\n");
  42. }
  43.  
  44. int min;
  45. int a ,b,s;
  46. printf("\n from which node do you want to start : ");
  47. scanf("%d",&s);
  48. visited[s]= true;
  49.  
  50. while(nedges<n-1)
  51. { min =999;
  52. a=0;
  53. b=0;
  54. for(i=0;i<n;i++)
  55. {
  56. if (visited[i]==true)
  57. {
  58. for(j=0;j<n;j++)
  59. {
  60. if (visited[j]!=true&&x[i][j]!=0)
  61. {
  62.  
  63. if (min > x[i][j])
  64. {
  65. min = x[i][j];
  66. a = i ;
  67. b = j ;
  68.  
  69. }
  70. }
  71. }
  72. }
  73. }
  74. tw = tw + x[a][b];
  75. printf("\n from %d to %d \n",a,b );
  76. visited[b]=true;
  77. printf("\n total weight : %d \n" ,tw);
  78. nedges++;
  79. }
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement