Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. ifstream fin("dijkstra.in");
  5. ofstream fout("dijkstra.out");
  6.  
  7. int d[101], viz[101], pred[101], a[101][101];
  8. vector <int> L[101];
  9. int n, s;
  10.  
  11. void Citire()
  12. { int x, y, c, i;
  13. fin >> n >> s;
  14. while( fin >> x >> y >> c)
  15. {
  16. L[x].push_back(y);
  17. a[x][y] = c;
  18. }
  19. for(i = 1; i <= n; i++)
  20. d[i] = 100005;
  21. d[s] = 0;
  22.  
  23. }
  24.  
  25. int Minim()
  26. {
  27. int minim = 100005, j, k;
  28. for(j = 1; j <= n; j++)
  29. if(viz[j] == 0 && minim > d[j])
  30. minim = d[j], k = j;
  31. return k;
  32. }
  33.  
  34. void Djikstra()
  35. {
  36. int i, j, p;
  37. for(i = 1 ;i < n; i++)
  38. {
  39. p = Minim();
  40. if(d[p] == 100005) break;
  41. else
  42. {
  43. viz[p] = 1;
  44. for(j = 0; j < L[p].size(); j++)
  45. if(d[L[p][j]] > d[p] + a[p][L[p][j]])
  46. {
  47. d[L[p][j]] = d[p] + a[p][L[p][j]];
  48. pred[L[p][j]] = p;
  49. }
  50. }
  51. }
  52. for(i = 1; i <= n; i++)
  53. if(i == s) fout<<0<<" ";
  54. else if(d[i] == 100005) fout << -1 <<" ";
  55. else if(d[i] < 100005) fout << d[i] <<" ";
  56. }
  57.  
  58. int main()
  59. {
  60. Citire();
  61. Djikstra();
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement