Submission #1322598

#TimeUsernameProblemLanguageResultExecution timeMemory
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...