#include <bits/stdc++.h>
using namespace std;
#define __Master_Moon__ int main()
#define ll long long
#define el "\n"
#define base 300
#define fi first
#define sq(x) (x)*(x)
#define se second
#define pub push_back
#define puf push_front
#define pii pair <int, int>
#define pll pair <long long, long long>
#define piii pair <long long, pair <int, int>>
#define iiii pair <int, pair <int, pair <int, int>>>
#define plll pair <long long, pair <long long, long long>>
#define FOR(i, a, b) for(int i = (a);i <=(b);i++)
#define FO(i, a, b) for(int i = (a);i >= (b);i--)
#define REP(i, n) for(int i = 0;i < (n);i++)
long const maxn = 2e5 + 50;
ll n,m,s,ed,l,k,ans;
ll d[maxn][2];
vector<pll> g[maxn];
vector<ll> val;
void dist(ll star,ll t)
{
priority_queue<pll,vector<pll>,greater<pll>> pq;
pq.push({0,star});
d[star][t] = 0;
while(pq.size())
{
ll u = pq.top().se;
ll du = pq.top().fi;
pq.pop();
if(du != d[u][t]) continue;
for(pii x : g[u])
{
if(du + x.se < d[x.fi][t])
{
d[x.fi][t] = du + x.se;
pq.push({d[x.fi][t],x.fi});
}
}
}
}
void solve()
{
cin >> n >> m >> s >> ed >> l >> k;
FOR(i,1,m)
{
ll u,v,w;
cin >> u >> v >> w;
g[u].pub({v,w});
g[v].pub({u,w});
}
memset(d,0x3f,sizeof d);
dist(s,0);
dist(ed,1);
if(d[ed][0] <= k)
{
cout << n*(n-1)/2;
return;
}
FOR(i,1,n) val.pub(d[i][1]);
sort(val.begin(),val.end());
FOR(i,1,n)
{
ll mtp = k - l - d[i][0];
int tmp = upper_bound(val.begin(),val.end(),mtp) - val.begin();
ans += tmp;
}
cout << ans;
}
__Master_Moon__
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
| # | 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... |