제출 #1188351

#제출 시각아이디문제언어결과실행 시간메모리
1188351user736482Construction Project 2 (JOI24_ho_t2)C++20
100 / 100
174 ms27088 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define MOD 998244353 #define INF 1000000000000000009 #define ld long double #define ll long long #define pb push_back using namespace std; ll n,a,b,c,d,m,k,s,t,oldk,dst1[200007],dst2[200007],wyn; vector<pair<ll,ll>>g[200007];//kto, ile place int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; cin>>s>>t>>c>>k; oldk=k; k-=c; for(int i=0;i<m;i++){ cin>>a>>b>>c; g[a].pb({b,c}); g[b].pb({a,c}); } for(int i=0;i<200007;i++){ dst1[i]=INF; dst2[i]=INF; } priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>>pq;//koszt gdzie; pq.push({0,s}); while(pq.size()){ auto pom=pq.top(); pq.pop(); if(dst1[pom.ss]!=INF)continue; dst1[pom.ss]=pom.ff; for(int i=0;i<g[pom.ss].size();i++){ pq.push({pom.ff+g[pom.ss][i].ss,g[pom.ss][i].ff}); } } if(dst1[t]<=oldk){ cout<<n*(n-1)/2; return 0; } pq.push({0,t}); while(pq.size()){ auto pom=pq.top(); pq.pop(); if(dst2[pom.ss]!=INF)continue; dst2[pom.ss]=pom.ff; for(int i=0;i<g[pom.ss].size();i++){ pq.push({pom.ff+g[pom.ss][i].ss,g[pom.ss][i].ff}); } } sort(dst1,dst1+200007); sort(dst2,dst2+200007); ll p2=0;//niewziety for(int i=n-1;i>=0;i--){ while(dst2[p2]+dst1[i]<=k)p2++; wyn+=p2; } cout<<wyn; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...