Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define mp(a, b) make_pair(a, b)
- int main()
- {
- ll n, m, a, b, dp[100010], x, y, w, INF = 1e15, temp;
- queue <ll> q;
- cin >> n >> m;
- for (ll i = 0; i < n; i++)
- dp[i] = INF;
- vector <vector <pair <ll, ll> > > g(n);
- for (ll i = 0; i < m; i++){
- cin >> x >> y >> w;
- g[x - 1].push_back(mp(w, y - 1));
- }
- cin >> a >> b;
- for (ll z = 0; z < n; z++)
- sort(g[z].begin(), g[z].end());
- dp[a - 1] = 0;
- q.push(a - 1);
- while (!q.empty()){
- temp = q.front();
- q.pop();
- for (ll i = 0; i < g[temp].size(); i++)
- if (dp[g[temp][i].second] > max(dp[temp], max((ll)g[temp].size() - 1 - i - 1,(ll) 0))){
- dp[g[temp][i].second] = max(dp[temp], max((ll)g[temp].size() - 1 - i - 1,(ll) 0));
- q.push(g[temp][i].second);
- }
- }
- if (dp[b - 1] == INF)
- cout << -1;
- else
- cout << dp[b - 1];
- cout << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment