Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. //#pragma (Ofast)
  2. #include <bits/stdc++.h>
  3. #include <cstdlib>
  4. #define pfor(i, n) for (int i = 0; i < (n); i++)
  5. #define rfor(i, n) for (int i = (n) - 1; i >= 0; i--)
  6. #define pb push_back
  7. #define fi first
  8. #define se second
  9. #define _USE_MATH_DEFINES
  10. #define gb(x, i) ((x >> i) & 1)
  11.  
  12. using namespace std;
  13. typedef long long ll;
  14.  
  15. ll INF = 1e18 + 3;
  16.  
  17. pair <pair <ll, int>, ll> p[7000];
  18.  
  19. ll d[3000];
  20.  
  21. set <int> se;
  22.  
  23. int main() {
  24. //freopen("maze.in", "r", stdin);
  25. //freopen("maze.out", "w", stdout);
  26. ios_base::sync_with_stdio(0);
  27. cin.tie(0);
  28. cout.tie(0);
  29. int n, m, s;
  30. cin >> n >> m >> s;
  31. pfor(i, n + 1)
  32. d[i] = INF;
  33. pfor(i, m) {
  34. int x, y, z;
  35. cin >> x >> y >> z;
  36. p[i].fi.fi = x;
  37. p[i].fi.se = y;
  38. p[i].se = z;
  39. }
  40. d[s] = 0;
  41. pfor(j, n) {
  42. pfor(i, m) {
  43. if (d[p[i].fi.fi] < INF) {
  44. if (d[p[i].fi.se] > d[p[i].fi.fi] + p[i].se) {
  45. if (j == n - 1) {
  46. se.insert(p[i].fi.se);
  47. }
  48. d[p[i].fi.se] = d[p[i].fi.fi] + p[i].se;
  49. }
  50. //cout << p[i].fi.fi << " " << p[i].fi.se << " " << d[p[i].fi.se] << endl;
  51. }
  52. }
  53. }
  54. pfor(i, n) {
  55. if (d[i + 1] == INF)
  56. cout << "*\n";
  57. else {
  58. if (se.count(i + 1) == 1)
  59. cout << "-\n";
  60. else
  61. cout << d[i + 1] << "\n";
  62. }
  63. }
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement