제출 #1324445

#제출 시각아이디문제언어결과실행 시간메모리
1324445mantaggezConstruction Project 2 (JOI24_ho_t2)C++20
0 / 100
8 ms3868 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<ll, ll>; const int nx = 2e5+5; const ll INF = 1e18; ll n, m, s, t, l, k, res; vector<ll> distS(nx, INF), distT(nx, INF); vector<pii> adj[nx]; priority_queue<pii, vector<pii>, greater<pii>> pq; void dijkstra(ll src, vector<ll>& dist) { dist[src] = 0; pq.push({0, src}); while(!pq.empty()) { auto [cw, u] = pq.top(); pq.pop(); for(auto [v, nw] : adj[u]) { if(dist[v] > dist[u] + nw) { dist[v] = dist[u] + nw; pq.push({dist[v], v}); } } } } int main() { cin.tie(NULL)->sync_with_stdio(false); cin >> n >> m; cin >> s >> t >> l >> k; for(int i=0;i<m;i++) { ll u, v, w; cin >> u >> v >> w; adj[u].push_back({v, w}); adj[v].push_back({u, w}); } dijkstra(s, distS); dijkstra(t, distT); for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { ll d = min(distS[i] + l + distT[j], distS[j] + l + distT[i]); if(d <= k) { // cout << i << ' ' << j << '\n'; res++; } } } cout << res ; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...