Submission #1013949


Source Code Expand

#include <algorithm>
#include <cassert>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <deque>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>

#define FOR(i,k,n) for (int (i)=(k); (i)<(n); ++(i))
#define rep(i,n) FOR(i,0,n)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fst first
#define snd second
#define all(v) begin(v), end(v)
#define debug(x) cerr<< #x <<": "<<x<<endl
#define debug2(x,y) cerr<< #x <<": "<< x <<", "<< #y <<": "<< y <<endl
#define INF 2*1e9
#define LL_INF 1e18

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vector<int> > vvi;
typedef vector<ll> vll;
typedef vector<vector<ll> > vvll;
template<class T> using vv=vector<vector< T > >;

int n;
struct Edge {
  double cost;
  int to;
};
vv<Edge> g;
vector<double> d;
typedef pair<double, int> pdi;

void dijkstra(int s) {
  d.assign(n+2, (double)LL_INF);
  priority_queue<pdi, vector<pdi>, greater<pdi> > q;
  d[s] = 0.0;
  q.push(mp(0.0, s));

  while (!q.empty()) {
    auto p = q.top();
    q.pop();
    int v = p.second;
    if (d[v] < p.first) {
      continue;
    }
    for (auto e : g[v]) {
      if (d[e.to] > d[v] + e.cost) {
        d[e.to] = d[v] + e.cost;
        q.push(mp(d[e.to], e.to));
      }
    }
  }
}

int main() {
  ll xs, ys, xg, yg;
  scanf("%lld %lld %lld %lld", &xs, &ys, &xg, &yg);
  scanf("%d", &n);
  vll x(n+2), y(n+2), r(n+2);
  x[0] = xs;
  y[0] = ys;
  r[0] = 0;
  FOR (i, 1, n+1) {
    scanf("%lld %lld %lld", &x[i], &y[i], &r[i]);
  }
  x[n+1] = xg;
  y[n+1] = yg;
  r[n+1] = 0;
  g.resize(n+2);
  rep (i, n+2) {
    FOR (j, i+1, n+2) {
      ll dx = x[i] - x[j];
      ll dy = y[i] - y[j];
      double c = sqrt(dx*dx + dy*dy) - r[i] - r[j];
      c = max(c, 0.0);
      Edge e;
      e.cost = c;
      e.to = j;
      g[i].pb(e);
      e.to = i;
      g[j].pb(e);
    }
  }

  dijkstra(0);
  double ans = d[n+1];
  printf("%.12f\n", ans);

  return 0;
}

Submission Info

Submission Time
Task E - Cosmic Rays
User tspcx
Language C++14 (Clang 3.8.0)
Score 600
Code Size 2277 Byte
Status AC
Exec Time 138 ms
Memory 20720 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 49
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt
Case Name Status Exec Time Memory
0_00.txt AC 3 ms 256 KB
0_01.txt AC 3 ms 256 KB
0_02.txt AC 3 ms 256 KB
1_00.txt AC 3 ms 256 KB
1_01.txt AC 3 ms 256 KB
1_02.txt AC 42 ms 16640 KB
1_03.txt AC 43 ms 17020 KB
1_04.txt AC 40 ms 16640 KB
1_05.txt AC 42 ms 17148 KB
1_06.txt AC 39 ms 16384 KB
1_07.txt AC 40 ms 16512 KB
1_08.txt AC 42 ms 17020 KB
1_09.txt AC 42 ms 16784 KB
1_10.txt AC 43 ms 16676 KB
1_11.txt AC 41 ms 16656 KB
1_12.txt AC 41 ms 16892 KB
1_13.txt AC 43 ms 16640 KB
1_14.txt AC 44 ms 17148 KB
1_15.txt AC 44 ms 17148 KB
1_16.txt AC 43 ms 16896 KB
1_17.txt AC 44 ms 17020 KB
1_18.txt AC 43 ms 16928 KB
1_19.txt AC 44 ms 17148 KB
1_20.txt AC 42 ms 16512 KB
1_21.txt AC 40 ms 16640 KB
1_22.txt AC 43 ms 17020 KB
1_23.txt AC 43 ms 17020 KB
1_24.txt AC 43 ms 17148 KB
1_25.txt AC 42 ms 16768 KB
1_26.txt AC 45 ms 17020 KB
1_27.txt AC 42 ms 16892 KB
1_28.txt AC 43 ms 17168 KB
1_29.txt AC 43 ms 17168 KB
1_30.txt AC 43 ms 16512 KB
1_31.txt AC 43 ms 16640 KB
1_32.txt AC 42 ms 17184 KB
1_33.txt AC 42 ms 16640 KB
1_34.txt AC 41 ms 16256 KB
1_35.txt AC 42 ms 16512 KB
1_36.txt AC 42 ms 16512 KB
1_37.txt AC 42 ms 16384 KB
1_38.txt AC 138 ms 20720 KB
1_39.txt AC 138 ms 20720 KB
1_40.txt AC 136 ms 20628 KB
1_41.txt AC 137 ms 20720 KB
1_42.txt AC 41 ms 16892 KB
1_43.txt AC 44 ms 17148 KB
1_44.txt AC 43 ms 17168 KB
1_45.txt AC 48 ms 17548 KB