Advertisement
Guest User

11A sursa

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