Submission #1320815

#TimeUsernameProblemLanguageResultExecution timeMemory
1320815phamngocphuc2008Construction Project 2 (JOI24_ho_t2)C++20
8 / 100
198 ms24840 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define fi first
#define se second
#define sz(x) ((int)x.size())
#define all(a) (a).begin(), (a).end()
#define inpvi(a, n) vi a(n); for(auto &i : a) cin >> i;

using vi = vector<int>;
using pii = pair<int, int>;
int iceil(int a, int b)
{
    return (a+b-1)/b;
}

bool chmin(int &a, int b)
{
    bool r = a > b;
    a = min(a,b);
    return r;
}
const int inf = numeric_limits<int>::max();

int n,m;
vector<vector<pair<int,int>>> adj;
int s,t,l,k;

vi dijkstra(int s)
{
    vi d(n, inf);
    d[s] = 0;
    priority_queue<pii, vector<pii>, greater<pii>> q;
    q.push({0, s});
    while(!q.empty())
    {
        auto [d_v, v] = q.top();
        q.pop();
        if(d_v != d[v]) continue;
        for(auto [to, len] : adj[v])
        {
            if(d[v] + len < d[to])
            {
                d[to] = d[v] + len;
                q.push({d[to], to});
            }
        }
    }
    return d;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    cin >> s >> t >> l >> k;

    --s;--t;
    adj.resize(n);
    for(int i = 0; i < m; ++i)
    {
        int a,b,c;
        cin >> a >> b >> c;
        --a;--b;
        adj[a].push_back({b,c});
        adj[b].push_back({a,c});
    }
    vi d1 = dijkstra(s);
    vi d2 = dijkstra(t);
    if(d1[t] <= k)
    {
        cout << n*(n-1)/2;
        return 0;
    }
    if(l > k)
    {
        cout << 0;
        return 0;
    }
    //for(auto &i : d) cerr << i << '\n';
    int ans = 0;
    for(int i = 0; i < n; ++i)
    {
        if(d1[i] <= k - l) ++ans;
        if(d2[i] <= k - l) ++ans;
    }
    cout << ans-1;

}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...