Submission #1178275

#TimeUsernameProblemLanguageResultExecution timeMemory
1178275biankConstruction Project 2 (JOI24_ho_t2)C++20
100 / 100
117 ms23276 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; const ll INF=1e18; vll dijkstra(int s, const vector<vector<ii>> &adj){ int n=sz(adj); vector<ll> dist(n,INF); priority_queue<pair<ll,int>> pq; pq.emplace(-(dist[s]=0),s); while(!pq.empty()){ auto[d,u]=pq.top(); pq.pop(); d*=-1; if(dist[u]!=d) continue; for(auto[v,w]:adj[u]) if(dist[v]>dist[u]+w) pq.emplace(-(dist[v]=dist[u]+w),v); } return dist; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,m,s,t; ll l,k; cin>>n>>m>>s>>t>>l>>k; --s,--t; vector<vector<ii>> adj(n); forn(i,m){ int u,v,w; cin>>u>>v>>w; --u,--v; adj[u].eb(v,w); adj[v].eb(u,w); } vll dist_s=dijkstra(s,adj); vll dist_t=dijkstra(t,adj); if(dist_s[t]<=k){ cout<<n*(n-1LL)/2<<'\n'; return 0; } sort(all(dist_t)); ll target=k-l; ll ans=0; auto cnt=[&](ll x){ return int(upper_bound(all(dist_t),x)-begin(dist_t)); }; forn(u,n){ ans+=cnt(target-dist_s[u]); } 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...