Submission #1383145


Source Code Expand

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
using namespace std;

typedef pair<int, int> P;
#define rep(i, n) for (int i=0; i<(n); i++)
#define all(c) (c).begin(), (c).end()
#define uniq(c) c.erase(unique(all(c)), (c).end())
#define _1 first
#define _2 second
#define pb push_back
#define INF 1145141919
#define MOD 1000000007

int N, M, K;
int S, T;
vector<P> G[30000];
int X[101], F[101];
int D[2][30000];

long long f(int x) {
  if (x <= 0) return 0;
  return F[upper_bound(X, X+K+1, x)-X-1];
}

signed main() {
  ios::sync_with_stdio(false); cin.tie(0);
  cin >> N >> M >> K >> S >> T;
  rep(i, M) {
    int a, b, c;
    cin >> a >> b >> c;
    G[a].pb(P(b, c));
    G[b].pb(P(a, c));
  }
  rep(i, K) cin >> X[i] >> F[i];
  X[K] = INF;

  rep(k, 2) {
    rep(i, N) D[k][i] = INF;
    int s = S;
    if (k == 1) s = T;
    priority_queue<P, vector<P>, greater<P> > q;
    D[k][s] = 0;
    q.push(P(0, s));
    while (!q.empty()) {
      int r = q.top()._1,
          x = q.top()._2;
      q.pop();
      if (D[k][x] < r) continue;

      for (auto p : G[x]) {
        int t = p._1, d = p._2;
        if (D[k][t] > r+d) {
          D[k][t] = r+d;
          q.push(P(D[k][t], t));
        }
      }
    }
  }
  long long m = (1LL<<60);
  rep(k, N) {
    m = min(m, f(D[0][k]) + f(D[1][k]));
  }
  cout << m << "\n";
  return 0;
}

Submission Info

Submission Time
Task D - 切符分割
User funcsr
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1559 Byte
Status WA
Exec Time 32 ms
Memory 3316 KB

Judge Result

Set Name direct small large
Score / Max Score 0 / 20 0 / 20 0 / 100
Status
AC × 3
WA × 2
AC × 12
WA × 8
AC × 2
WA × 5
Set Name Test Cases
direct direct/basic_case00, direct/basic_case01, direct/basic_case02, direct/basic_case03, direct/basic_case04
small small/append00, small/append01, small/append02, small/append03, small/append20, small/append21, small/append30, small/basic_case00, small/basic_case01, small/basic_case02, small/basic_case03, small/basic_case04, small/basic_case05, small/basic_case06, small/basic_case07, small/basic_case08, small/basic_case09, small/sample02, small/sample03, small/split00
large large/append10, large/append11, large/append12, large/large_case00, large/large_case01, large/large_case02, large/large_case03
Case Name Status Exec Time Memory
sample00 AC 2 ms 1024 KB
sample01 AC 2 ms 1024 KB
direct/basic_case00 AC 2 ms 1024 KB
direct/basic_case01 AC 2 ms 1024 KB
direct/basic_case02 WA 2 ms 1024 KB
direct/basic_case03 AC 2 ms 1024 KB
direct/basic_case04 WA 2 ms 1024 KB
large/append10 WA 26 ms 2816 KB
large/append11 AC 25 ms 2816 KB
large/append12 AC 25 ms 2816 KB
large/large_case00 WA 32 ms 3192 KB
large/large_case01 WA 29 ms 2956 KB
large/large_case02 WA 31 ms 3080 KB
large/large_case03 WA 32 ms 3316 KB
small/append00 WA 2 ms 1024 KB
small/append01 AC 2 ms 1024 KB
small/append02 WA 2 ms 1024 KB
small/append03 WA 2 ms 1024 KB
small/append20 WA 2 ms 1024 KB
small/append21 AC 2 ms 1024 KB
small/append30 AC 2 ms 1024 KB
small/basic_case00 AC 2 ms 1024 KB
small/basic_case01 AC 2 ms 1024 KB
small/basic_case02 WA 2 ms 1024 KB
small/basic_case03 AC 2 ms 1024 KB
small/basic_case04 WA 2 ms 1024 KB
small/basic_case05 AC 2 ms 1024 KB
small/basic_case06 AC 2 ms 1024 KB
small/basic_case07 AC 2 ms 1024 KB
small/basic_case08 WA 2 ms 1024 KB
small/basic_case09 WA 2 ms 1024 KB
small/sample02 AC 2 ms 1024 KB
small/sample03 AC 2 ms 1024 KB
small/split00 AC 2 ms 1024 KB