Submission #1200380

#TimeUsernameProblemLanguageResultExecution timeMemory
1200380AblablaConstruction Project 2 (JOI24_ho_t2)C++20
100 / 100
209 ms22184 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pii; const ll INF = 1e18 + 7; int main() { ll n, m; cin >> n >> m; ll s, t, l, k; cin >> s >> t >> l >> k; s--; t--; vector<vector<pii>> csucsok(n, vector<pii>()); for(ll i = 0; i < m; i++){ ll a, b, c; cin >> a >> b >> c; a--; b--; csucsok[a].push_back({b, c}); csucsok[b].push_back({a, c}); } vector<ll> tTol(n, INF); vector<bool> bejart(n); priority_queue<pii/*, vector<pii>, greater<pii>*/> bejar; bejar.push({0, t}); tTol[t] = 0; while(!bejar.empty()){ ll akt = bejar.top().second; bejar.pop(); if(bejart[akt]) continue; bejart[akt] = 1; for(pii x : csucsok[akt]){ if(bejart[x.first]) continue; if(tTol[x.first] > tTol[akt] + x.second){ tTol[x.first] = tTol[akt] + x.second; bejar.push({-tTol[x.first], x.first}); } } } vector<ll> sTol(n, INF); bejart.assign(n, 0); bejar.push({0, s}); sTol[s] = 0; while(!bejar.empty()){ ll akt = bejar.top().second; bejar.pop(); if(bejart[akt]) continue; bejart[akt] = 1; for(pii x : csucsok[akt]){ if(bejart[x.first]) continue; if(sTol[x.first] > sTol[akt] + x.second){ sTol[x.first] = sTol[akt] + x.second; bejar.push({-sTol[x.first], x.first}); } } } if(sTol[t] <= k){ cout << n*(n - 1) / 2 << "\n"; return 0; } sort(tTol.begin(), tTol.end(), greater<ll>()); sort(sTol.begin(), sTol.end()); ll ind = 0; ll ans = 0; for(ll i = 0; i < n; i++){ while(ind < tTol.size() && sTol[i] + tTol[ind] + l > k){ ind++; } ans += n - ind; } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...