제출 #1182702

#제출 시각아이디문제언어결과실행 시간메모리
1182702enkhochirConstruction Project 2 (JOI24_ho_t2)C++20
0 / 100
26 ms50500 KiB
#include <bits/stdc++.h> using namespace std; #include<ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define int long long typedef tree< int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; vector<pair<int,int>> adj[2000005]; int n,m; int s,t,l,k; signed main() { ios::sync_with_stdio(0); cin.tie(NULL); cin>>n>>m; cin>>s>>t>>l>>k; for(int i=0; i<m; i++){ int u,v,w; cin>>u>>v>>w; adj[u].push_back({w,v}); adj[v].push_back({w,u}); } vector<int> d1(200005,1e16); vector<int> d2(200005,1e16); priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> q; d1[s]=0; q.push({0,s}); while(!q.empty()){ int w=q.top().first, node=q.top().second; q.pop(); if(w!=d1[node]) continue; for(pair<int,int> &j: adj[node]){ int nw=j.first+w, next=j.second; if(d1[next]>nw){ d1[next]=nw; q.push({nw,next}); } } } while(!q.empty()) q.pop(); d2[t]=0; q.push({0,t}); while(!q.empty()){ int w=q.top().first, node=q.top().second; q.pop(); if(w!=d2[node]) continue; for(pair<int,int> &j: adj[node]){ int nw=j.first+w, next=j.second; if(d2[next]>nw){ d2[next]=nw; q.push({nw,next}); } } } ordered_set s,t; for(int i=1; i<=n; i++){ s.insert(d1[i]); } for(int i=1; i<=n; i++){ t.insert(d2[i]); } int ans=0; for(int i=1; i<=n; i++){ ans+=t.order_of_key(k-l-d1[i]+1); ans+=s.order_of_key(k-l-d2[i]+1); } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...