Advertisement
hsiuyee

G - Security Badge

Aug 1st, 2023
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define fastio ios::sync_with_stdio(false), cin.tie(0);
  5. #define pb push_back
  6. #define all(x) x.begin(), x.end()
  7.  
  8. const ll MAXN = 1e3 + 5;
  9. struct node
  10. {
  11.     ll next, c, d;
  12. };
  13.  
  14. ll N, M, K;
  15. vector<node> G[MAXN];
  16. vector<ll> tmp;
  17. ll s, t, vis[MAXN];
  18.  
  19. void dfs(ll now, ll pass)
  20. {
  21.     vis[now] = 1;
  22.     for (auto it : G[now])
  23.     {
  24.         if (!vis[it.next] && it.c <= pass && pass <= it.d)
  25.         {
  26.             vis[it.next] = 1;
  27.             dfs(it.next, pass);
  28.         }
  29.     }
  30. }
  31.  
  32. bool iniDfs(ll pass)
  33. {
  34.     for (ll i = 0; i < N; i++)
  35.         vis[i] = 0;
  36.     dfs(s, pass);
  37.     return vis[t];
  38. }
  39.  
  40. void init()
  41. {
  42.     cin >> N >> M >> K;
  43.     cin >> s >> t;
  44.     s--;
  45.     t--;
  46.     ll x, y, a, b;
  47.     for (ll i = 0; i < M; i++)
  48.     {
  49.         cin >> a >> b >> x >> y;
  50.         a--;
  51.         b--;
  52.         tmp.pb(x);
  53.         tmp.pb(y);
  54.         G[a].pb({b, x, y});
  55.     }
  56.     sort(all(tmp));
  57.     tmp.resize(unique(all(tmp)) - tmp.begin());
  58. }
  59.  
  60. void solve()
  61. {
  62.     ll ans = 0;
  63.     ll last = tmp[0];
  64.     for (ll i = 1; i < tmp.size(); i++)
  65.     {
  66.         if (iniDfs(last))
  67.         {
  68.             ans += tmp[i] - last + 1;
  69.         }
  70.         last = tmp[i] + 1;
  71.     }
  72.     cout << ans << "\n";
  73. }
  74.  
  75. signed main()
  76. {
  77.     fastio
  78.     init();
  79.     solve();
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement