#include<bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
#define int long long
#define P array<int,2>
using namespace std;
const int INF=1e18;
int n,m,s,t,l,k,ans,d1[200005],d2[200005];
vector<P>g[200005];
void f(int st,int*d){
priority_queue<P,vector<P>,greater<>>pq;
for(int i=0;i<n;i++)d[i]=1e18;
d[st]=0,pq.push({0,st});
while(pq.size()){
auto[di,u]=pq.top();pq.pop();
if(di<=d[u])for(auto[v,w]:g[u])if(d[u]+w<d[v])d[v]=d[u]+w,pq.push({d[v],v});
}
}
signed main(void){
exoworldgd;
cin>>n>>m>>s>>t>>l>>k,s--,t--;
for(int i=0,a,b,c;i<m;i++)cin>>a>>b>>c,a--,b--,g[a].push_back({b,c}),g[b].push_back({a,c});
f(s,d1),f(t,d2);
if(d1[t]<=k){cout<<n*(n-1)/2;return 0;}
sort(d1,d1+n),sort(d2,d2+n);
for(int i=0,j=n-1;i<n;i++){
while(j+1&&d1[i]+d2[j]+l>k)j--;
ans+=j+1;
}
cout<<ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |