Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. #include <fstream>
  2. #define infinit 1000000000
  3.  
  4. using namespace std;
  5. ifstream f("dijkstra.in");
  6. ofstream g("dijkstra.out");
  7. int a[200][200],d[200],v[200],n,i,j,k,p,pmax,c;
  8.  
  9. int main()
  10. {f>>n>>p;
  11. for(i=1;i<=n;i++)
  12. for(j=1;j<=n;j++)
  13. a[i][j]=infinit;
  14. while(f>>i>>j>>c)
  15. a[i][j]=c;
  16. for(i=1;i<=n;i++)
  17. {
  18. v[i]=0;
  19. d[i]=a[p][i];
  20. }
  21. d[0]=infinit;
  22. d[p]=0;
  23. v[p]=i;
  24. for(k=1;k<=n;k++)
  25. {
  26. pmax=0;
  27. for(i=1;i<=n;i++)
  28. if(v[i]==0&&d[i]<d[pmax])
  29.  
  30. pmax=i;
  31. v[pmax]=1;
  32. for(i=1;i<=n;i++)
  33. if(v[i]==0&&d[i]>d[pmax]+a[pmax][i])
  34. d[i]=d[pmax]+a[pmax][i];
  35.  
  36. }
  37. for(i=1;i<=n;i++)
  38.  
  39. if(d[i]!=infinit)
  40. g<<d[i]<<" ";
  41. else
  42. g<<-1<<" ";
  43.  
  44.  
  45.  
  46.  
  47. return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement