제출 #1322598

#제출 시각아이디문제언어결과실행 시간메모리
1322598cubedConstruction Project 2 (JOI24_ho_t2)C++20
16 / 100
2094 ms744 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl '\n'
#define f first
// #define s second
#define pb(x) push_back(x)
#define int long long


/*
ORDERED SET PDBS

#include <bits/extc++.h>
using namespace __gnu_pbds;

typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
*/

const int MOD = 1e9+7;
const int inf = 1e9;
const int INF = 1e18+20;
const int LOG = 25;

void solve() {
    int n, m;
    cin>>n>>m;

    int s, t, l, k;
    cin>>s>>t>>l>>k;
    s--; t--;

    vector<vector<pair<int, int>>> adj(n);
    for (int i=0; i<m; i++) {
        int u, v, w;
        cin>>u>>v>>w;
        u--; v--;

        adj[u].push_back({v, w});
        adj[v].push_back({u, w});
    }

    int cnt=0;

    for (int i = 0; i<n; i++) {
        for (int j=i+1; j<n; j++) {
            // add edge from u->v
            adj[i].push_back({j, l});
            adj[j].push_back({i, l});

            vector<int> dist(n, INF);
            dist[s]=0;

            priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
            pq.push({0, s});

            while (!pq.empty()) {
                auto [d, u] = pq.top();
                pq.pop();

                if (dist[u]!=d) continue;

                for (auto [v, w] : adj[u]) {
                    if (dist[v] > d+w) {
                        dist[v] = d+w;
                        pq.push({dist[v], v});
                    }
                }
            }

            if (dist[t] <= k) cnt++;

            adj[i].pop_back();
            adj[j].pop_back();
        }
    }

    cout<<cnt<<endl;
}

bool multi=false;

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    

    int t=1;
    if (multi) cin>>t;
 
    while (t--) solve();
 
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...