Submission #1095700

#TimeUsernameProblemLanguageResultExecution timeMemory
1095700DucNguyen2007Construction Project 2 (JOI24_ho_t2)C++14
100 / 100
162 ms28160 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
 
const int MAXN = 200001;
const ll INF = (ll)(1e18);
 
struct Node {
  int u;
  ll dis;
};
 
struct cmp {
  bool operator()(const Node &a, const Node &b) const {
    return a.dis > b.dis;
  }
};
 
int n, m, s, t, l;
ll dist[2][MAXN], ans, k;
bool vis[2][MAXN];
vector<pii> e[MAXN];
 
void dij(int S, bool op) {
  priority_queue<Node, vector<Node>, cmp> pq;
  for(int i = 1; i <= n; ++i) {
    dist[op][i] = INF;
    vis[op][i] = 0;
  }
  dist[op][S] = 0;
  pq.push({S, 0});
  for(; !pq.empty(); ) {
    auto [u, dis] = pq.top();
    pq.pop();
    if(vis[op][u]) {
      continue;
    }
    vis[op][u] = 1;
    for(auto [v, w] : e[u]) {
      if(dis + w < dist[op][v]) {
        dist[op][v] = dis + w;
        pq.push({v, dis + w});
      }
    }
  }
}
 
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m >> s >> t >> l >> k;
  for(int i = 1, u, v, w; i <= m; ++i) {
    cin >> u >> v >> w;
    e[u].emplace_back(v, w);
    e[v].emplace_back(u, w);
  }
  dij(s, 0);
  dij(t, 1);
  if(dist[0][t] <= k) {
    cout << 1ll * n * (n - 1) / 2;
    return 0;
  }
  sort(dist[0] + 1, dist[0] + n + 1);
  sort(dist[1] + 1, dist[1] + n + 1);
  for(int i = 1, j = n; i <= n; ++i) {
    for(; j > 0 && dist[0][i] + dist[1][j] + l > k; --j) {
    }
    ans += j;
  }
  cout << ans;
  return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void dij(int, bool)':
Main.cpp:34:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   34 |     auto [u, dis] = pq.top();
      |          ^
Main.cpp:40:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   40 |     for(auto [v, w] : e[u]) {
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...