제출 #1170704

#제출 시각아이디문제언어결과실행 시간메모리
1170704CraftlessConstruction Project 2 (JOI24_ho_t2)C++20
0 / 100
3 ms5444 KiB
#include <bits/stdc++.h> #define int long long int #define F first #define S second #define pb push_back #define mp make_pair #define pi pair<int, int> #define INF 1e13 using namespace std; // remove edges going back, only consider going forward // find distances to E at each node, then only pair if d[v] + L < d[u] // for each u, find a v such that d[v] < d[u] - L (saves time), dd[u] + d[v] + L <= K int N, M, S, E, L, K, ans; vector<pi> adjlist[200010]; using namespace std; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N >> M >> S >> E >> L >> K; for (int i = 0; i < M; i++) { int a,b,c; cin>>a>>b>>c; adjlist[a].pb({ c, b }); adjlist[b].pb({ c, a }); } vector<int> distS(N + 1, INF); priority_queue<pi, vector<pi>, greater<pi>> pq1; distS[S] = 0; pq1.push({0,S}); while (!pq1.empty()) { auto [d,u] = pq1.top();pq1.pop(); if(d > distS[u])continue; for(auto [w,v]: adjlist[u]){ if(distS[u] + w >= distS[v])continue; distS[v] = distS[u] + w; pq1.push({distS[v],v}); } } vector<int> distE(N + 1, INF); priority_queue<pi, vector<pi>, greater<pi>> pq2; distE[E] = 0; pq2.push({0,E}); while (!pq2.empty()) { auto [d,u] = pq2.top();pq2.pop(); if(d > distE[u])continue; for(auto [w,v]: adjlist[u]){ if(distE[u] + w >= distE[v])continue; distE[v] = distE[u] + w; pq2.push({distE[v],v}); } } vector<int> ls(distS), le(distE); sort(ls.begin(), ls.end()); sort(le.begin(), le.end()); for (int i = 1; i <= N; i++) { int stuff = (upper_bound(le.begin(), le.end(), K - L - distS[i]) - le.begin()); if (distE[i] <= K - L - distS[i]) stuff--; // cout << stuff << " "; ans += stuff; } // cout << endl; // for (int i = 1; i <= N; i++) { // cout << i << " "; // } // cout << endl; // for (int i = 1; i <= N; i++) { // cout << distS[i] << " "; // } // cout << endl; // for (int i = 1; i <= N; i++) { // cout << distE[i] << " "; // } cout << ans << "\n"; 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...