結果

提出番号 1966
提出者 rickytheta
言語 C++
提出日時 2018-08-04 14:45:55
問題名 (73)観光計画
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 48ms 30656KB
2 AC 100% 58ms 33296KB
3 AC 100% 26ms 24752KB
4 AC 100% 72ms 38192KB
5 AC 100% 40ms 28384KB
6 AC 100% 62ms 35936KB
7 AC 100% 73ms 37200KB
8 AC 100% 72ms 37232KB
9 AC 100% 32ms 26960KB
10 AC 100% 93ms 41936KB
11 AC 100% 38ms 28896KB
12 AC 100% 15ms 22272KB
13 AC 100% 35ms 28592KB
14 AC 100% 84ms 40096KB
15 AC 100% 67ms 34080KB
16 AC 100% 59ms 34544KB
17 AC 100% 81ms 38736KB
18 AC 100% 50ms 32768KB
19 AC 100% 16ms 21632KB
20 AC 100% 41ms 29072KB
21 AC 100% 19ms 24896KB
22 AC 100% 33ms 27776KB
23 AC 100% 40ms 28288KB
24 AC 100% 104ms 44656KB
25 AC 100% 79ms 38128KB
26 AC 100% 89ms 40352KB
27 AC 100% 23ms 23600KB
28 AC 100% 21ms 22896KB
29 AC 100% 54ms 32768KB
30 AC 100% 41ms 29248KB
31 AC 100% 84ms 43696KB
32 AC 100% 56ms 33120KB
33 AC 100% 14ms 20720KB
34 AC 100% 78ms 39184KB
35 AC 100% 15ms 20544KB
36 AC 100% 54ms 35840KB
37 AC 100% 37ms 27488KB
38 AC 100% 9ms 19392KB
39 AC 100% 84ms 44000KB
40 AC 100% 14ms 21744KB
41 AC 100% 87ms 41088KB
42 AC 100% 29ms 24320KB
43 AC 100% 87ms 44512KB
44 AC 100% 55ms 32032KB
45 AC 100% 65ms 34128KB
46 AC 100% 65ms 35520KB
47 AC 100% 88ms 42128KB
48 AC 100% 84ms 42000KB
49 AC 100% 50ms 32128KB
50 AC 100% 82ms 37920KB
51 AC 100% 18ms 22752KB
52 AC 100% 48ms 30352KB
53 AC 100% 31ms 24592KB
54 AC 100% 50ms 35216KB
55 AC 100% 16ms 22560KB
56 AC 100% 50ms 31712KB
57 AC 100% 30ms 27312KB
58 AC 100% 39ms 27776KB
59 AC 100% 22ms 23072KB
60 AC 100% 24ms 24352KB
61 AC 100% 38ms 27360KB
62 AC 100% 73ms 38256KB
63 AC 100% 67ms 36032KB
64 AC 100% 89ms 38448KB
65 AC 100% 77ms 37312KB
66 AC 100% 4ms 17616KB
67 AC 100% 52ms 30128KB
68 AC 100% 43ms 31712KB
69 AC 100% 99ms 47680KB
70 AC 100% 60ms 33168KB

ソースコード

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

typedef int _loop_int;
#define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i)
#define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i)
#define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i)

#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl
#define ALL(a) (a).begin(),(a).end()

#define CHMIN(a,b) a=min((a),(b))
#define CHMAX(a,b) a=max((a),(b))

// mod
const ll MOD = 1000000007ll;
#define FIX(a) ((a)%MOD+MOD)%MOD

// floating
typedef double Real;
const Real EPS = 1e-11;
#define EQ0(x) (abs(x)<EPS)
#define EQ(a,b) (abs(a-b)<EPS)
typedef complex<Real> P;

int n,m,k;
vector<pii> g[125252];
int h[125252], d[125252];

int hp[125252];

int main(){
  scanf("%d%d%d",&n,&m,&k);
  REP(i,m){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    --a;--b;
    g[a].push_back(pii(b,c));
    g[b].push_back(pii(a,c));
  }
  REP(i,k)scanf("%d%d",h+i,d+i),h[i]--;
  REP(i,n)hp[i] = -1<<30;
  priority_queue<pii> Q;
  REP(i,k){
    hp[h[i]] = d[i];
    Q.push(pii(d[i],h[i]));
  }
  while(Q.size()){
    pii P = Q.top(); Q.pop();
    int p = P.second;
    if(hp[p] != P.first)continue;
    for(pii P2 : g[p]){
      int to = P2.first;
      int cst = P2.second;
      int nhp = hp[p] - cst;
      if(nhp<0)continue;
      if(nhp>hp[to]){
        hp[to] = nhp;
        Q.push(pii(nhp, to));
      }
    }
  }
  int ans = 0;
  REP(i,n)if(hp[i]>=0)ans++;
  printf("%d\n",ans);
  return 0;
}