Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4. ifstream in("dijkstra.in");
  5. ofstream out("dijkstra.out");
  6. int viz[101],prec[101],d[101],c[101][101];
  7. int main()
  8. {
  9. const int inf=100000000;
  10. int n,p;
  11. in>>n>>p;
  12. int x,y,cs;
  13. for(int i=1; i<=n; i++)
  14. {
  15. for(int j=1; j<=n; j++)
  16. if(i!=j)
  17. c[i][j]=inf;
  18. }
  19. while(in>>x>>y>>cs)
  20. {
  21. c[x][y]=cs;
  22. }
  23. viz[p]=1;
  24. for(int i=1; i<=n; i++)
  25. {
  26. d[i]=c[p][i];
  27. if(c[p][i]!=inf && i!=p)
  28. prec[i]=p;
  29. }
  30. int gata;
  31. gata=0;
  32. int minim,imin;
  33. for(int k=1; k<n && !gata; k++)
  34. {
  35. minim=inf;
  36. for(int i=1; i<=n; i++)
  37. if(viz[i]==0 && d[i]<minim)
  38. {
  39. minim=d[i];
  40. imin=i;
  41. }
  42. if(minim==inf)
  43. gata=1;
  44. else
  45. {
  46. viz[imin]=1;
  47. for(int i=1; i<=n; i++)
  48. if(viz[i]==0)
  49. {
  50. if(d[i]>d[imin]+c[imin][i])
  51. {
  52. d[i]=d[imin]+c[imin][i];
  53. prec[i]=imin;
  54. }
  55. }
  56. }
  57. }
  58. for(int i=1; i<=n; i++)
  59. {
  60. if(d[i]!=inf)
  61. out<<d[i]<<" ";
  62. else
  63. out<<"-1"<<" ";
  64. }
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement