Advertisement
Green_13

პრიმის ალგორითმი

Feb 12th, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. // Green ))
  2. #include<iostream>
  3. #include<stdio.h>
  4. #include<cstdlib>
  5. #include<math.h>
  6. #include<algorithm>
  7. #include<fstream>
  8. #include<string>
  9. #include<queue>
  10. #include<bitset>
  11. #include<stack>
  12. #include <cstdio>
  13. #include <iomanip>
  14. #include <cstdlib>
  15. #include <cmath>
  16. #include <vector>
  17. #include <set>
  18. #include <map>
  19. #include <deque>
  20. #include <list>
  21. #include <cstring>
  22. #include <cassert>
  23. #include <ctime>
  24. #include <complex>
  25. #define PI 3.141592653589793
  26. #define INF 100000000
  27. #define UNSIGNED 4294967295 //INF
  28. using namespace std;
  29. int a[101][101]={0},s,maxc,n,m,h,v;
  30. vector <int> g,viz;  
  31. int main(){
  32.  freopen("input.txt","r",stdin);
  33.  freopen("output.txt","w",stdout);
  34.   cin>>n>>m;
  35.   viz.resize(n+1,0);
  36.  for (int i=1;i<=m;i++){
  37.      int x,y,c;
  38.       cin>>x>>y>>c;
  39.       a[x][y]=a[y][x]=c;
  40.       }
  41.       v=1;
  42.         while (g.size()<n){
  43.      g.push_back(v);
  44.      viz[v]=1;
  45.      maxc=INF;
  46.      for (int i=0;i<g.size();i++)
  47.          for (int j=1;j<=n;j++)
  48.              if (a[g[i]][j]>0 && viz[j]==0)
  49.                   if (a[g[i]][j]<maxc){
  50.                                     maxc=a[g[i]][j];
  51.                                     v=j;
  52.                                     }
  53.                   if (maxc==INF) maxc=0;
  54.                   s+=maxc;
  55. }
  56.       cout<<s;
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement