Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define fastio ios::sync_with_stdio(false), cin.tie(0);
- #define pb push_back
- #define all(x) x.begin(), x.end()
- const ll MAXN = 1e3 + 5;
- struct node
- {
- ll next, c, d;
- };
- ll N, M, K;
- vector<node> G[MAXN];
- vector<ll> tmp;
- ll s, t, vis[MAXN];
- void dfs(ll now, ll pass)
- {
- vis[now] = 1;
- for (auto it : G[now])
- {
- if (!vis[it.next] && it.c <= pass && pass <= it.d)
- {
- vis[it.next] = 1;
- dfs(it.next, pass);
- }
- }
- }
- bool iniDfs(ll pass)
- {
- for (ll i = 0; i < N; i++)
- vis[i] = 0;
- dfs(s, pass);
- return vis[t];
- }
- void init()
- {
- cin >> N >> M >> K;
- cin >> s >> t;
- s--;
- t--;
- ll x, y, a, b;
- for (ll i = 0; i < M; i++)
- {
- cin >> a >> b >> x >> y;
- a--;
- b--;
- tmp.pb(x);
- tmp.pb(y);
- G[a].pb({b, x, y});
- }
- sort(all(tmp));
- tmp.resize(unique(all(tmp)) - tmp.begin());
- }
- void solve()
- {
- ll ans = 0;
- ll last = tmp[0];
- for (ll i = 1; i < tmp.size(); i++)
- {
- if (iniDfs(last))
- {
- ans += tmp[i] - last + 1;
- }
- last = tmp[i] + 1;
- }
- cout << ans << "\n";
- }
- signed main()
- {
- fastio
- init();
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement