Advertisement
Guest User

ASGTDFSAGHFASGDs

a guest
Jan 29th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("parc.in");
  6. ofstream fout("parc.out");
  7.  
  8. int N, M, nrP;
  9. int A[101][101], D[1001], Viz[1001], Pred[1001], Poarta[1001];
  10.  
  11. void Dijkstra(int S)
  12. {
  13. int i, p, minim, pas;
  14. for(i = 1 ; i <= N ; ++i)
  15. D[i] = 1e9;
  16. D[S] = 0;
  17. for(pas = 1 ; pas < N ; ++pas)
  18. {
  19. minim = 1e9;
  20. p = 0;
  21. for(i = 1 ; i <= N ; ++i)
  22. {
  23. if(minim > D[i] && Viz[i] == 0)
  24. {
  25. minim = D[i];
  26. p = i;
  27. }
  28. }
  29. if(p == 0) return ;
  30. Viz[p] = 1;
  31. for(i = 1 ; i <= N ; ++i)
  32. {
  33. if(A[p][i] < 1e9 && D[i] > D[p] + A[p][i])
  34. {
  35. D[i] = D[p] + A[p][i];
  36. Pred[i] = p;
  37. }
  38. }
  39. }
  40. }
  41.  
  42. int main()
  43. {
  44. int i, j, x, y, C, L, Minim = 1e9, R;
  45. fin >> N >> M >> C;
  46. for(i = 1 ; i < N ; ++i)
  47. {
  48. for(j = i + 1 ; j <= N ; ++j)
  49. {
  50. A[i][j] = A[j][i] = 1e9;
  51. }
  52. }
  53.  
  54. for(i = 1 ; i <= M ; ++i)
  55. {
  56. fin >> x >> y >> L;
  57. A[x][y] = A[y][x] = L;
  58. }
  59.  
  60. fin >> nrP;
  61. for(i = 1 ; i <= nrP ; ++i)
  62. {
  63. fin >> x;
  64. Poarta[x] = 1;
  65. }
  66.  
  67. Dijkstra(C);
  68. for(i = 1 ; i <= N ; ++i)
  69. {
  70. if(D[i] <= Minim && Poarta[i] == 1)
  71. {
  72. Minim = D[i];
  73. R = i;
  74. }
  75. }
  76. fout << R;
  77.  
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement