| 提出番号 | 1845 |
|---|---|
| 提出者 | dohatsutsu |
| 言語 | C++ |
| 提出日時 | 2018-08-04 14:12:49 |
| 問題名 | (73)観光計画 |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 120ms | 41168KB |
| 2 | AC | 100% | 144ms | 45216KB |
| 3 | AC | 100% | 69ms | 27776KB |
| 4 | AC | 100% | 187ms | 55184KB |
| 5 | AC | 100% | 101ms | 37568KB |
| 6 | AC | 100% | 164ms | 51728KB |
| 7 | AC | 100% | 176ms | 53744KB |
| 8 | AC | 100% | 171ms | 53216KB |
| 9 | AC | 100% | 80ms | 34416KB |
| 10 | AC | 100% | 244ms | 67472KB |
| 11 | AC | 100% | 90ms | 36848KB |
| 12 | AC | 100% | 35ms | 22384KB |
| 13 | AC | 100% | 90ms | 34592KB |
| 14 | AC | 100% | 210ms | 58448KB |
| 15 | AC | 100% | 159ms | 48832KB |
| 16 | AC | 100% | 162ms | 49456KB |
| 17 | AC | 100% | 191ms | 60928KB |
| 18 | AC | 100% | 141ms | 46720KB |
| 19 | AC | 100% | 35ms | 27312KB |
| 20 | AC | 100% | 100ms | 37120KB |
| 21 | AC | 100% | 57ms | 30272KB |
| 22 | AC | 100% | 82ms | 33776KB |
| 23 | AC | 100% | 101ms | 34848KB |
| 24 | AC | 100% | 249ms | 69168KB |
| 25 | AC | 100% | 183ms | 60240KB |
| 26 | AC | 100% | 214ms | 61056KB |
| 27 | AC | 100% | 50ms | 25920KB |
| 28 | AC | 100% | 47ms | 26480KB |
| 29 | AC | 100% | 139ms | 44688KB |
| 30 | AC | 100% | 92ms | 38928KB |
| 31 | AC | 100% | 227ms | 67168KB |
| 32 | AC | 100% | 139ms | 46400KB |
| 33 | AC | 100% | 33ms | 21056KB |
| 34 | AC | 100% | 171ms | 56928KB |
| 35 | AC | 100% | 31ms | 20544KB |
| 36 | AC | 100% | 169ms | 50128KB |
| 37 | AC | 100% | 77ms | 33520KB |
| 38 | AC | 100% | 22ms | 19200KB |
| 39 | AC | 100% | 295ms | 62800KB |
| 40 | AC | 100% | 33ms | 21200KB |
| 41 | AC | 100% | 221ms | 61056KB |
| 42 | AC | 100% | 53ms | 28464KB |
| 43 | AC | 100% | 261ms | 69520KB |
| 44 | AC | 100% | 141ms | 44064KB |
| 45 | AC | 100% | 152ms | 48928KB |
| 46 | AC | 100% | 159ms | 49776KB |
| 47 | AC | 100% | 226ms | 61408KB |
| 48 | AC | 100% | 229ms | 63024KB |
| 49 | AC | 100% | 110ms | 43856KB |
| 50 | AC | 100% | 191ms | 52032KB |
| 51 | AC | 100% | 49ms | 25536KB |
| 52 | AC | 100% | 121ms | 39488KB |
| 53 | AC | 100% | 69ms | 30368KB |
| 54 | AC | 100% | 163ms | 50960KB |
| 55 | AC | 100% | 45ms | 24064KB |
| 56 | AC | 100% | 131ms | 39984KB |
| 57 | AC | 100% | 71ms | 34512KB |
| 58 | AC | 100% | 88ms | 36608KB |
| 59 | AC | 100% | 47ms | 30336KB |
| 60 | AC | 100% | 61ms | 27536KB |
| 61 | AC | 100% | 81ms | 33776KB |
| 62 | AC | 100% | 203ms | 55680KB |
| 63 | AC | 100% | 165ms | 47424KB |
| 64 | AC | 100% | 199ms | 58720KB |
| 65 | AC | 100% | 180ms | 53056KB |
| 66 | AC | 100% | 6ms | 15920KB |
| 67 | AC | 100% | 95ms | 40992KB |
| 68 | AC | 100% | 118ms | 39088KB |
| 69 | AC | 100% | 301ms | 77936KB |
| 70 | AC | 100% | 129ms | 46496KB |
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct edge{
ll to,cost;
edge(ll to,ll cost) : to(to), cost(cost) {}
};
ll N,M,K;
vector< ll > d,h;
vector< edge > G[100005];
int main(){
cin>>N>>M>>K;
for(int i=0;i<M;i++){
ll a,b,c;
cin>>a>>b>>c;
a--,b--;
G[a].push_back( edge(b,c) );
G[b].push_back( edge(a,c) );
}
h.resize(K);
d.resize(K);
const ll tmp = (1LL<<30);
for(int i=0;i<K;i++){
cin>>h[i]>>d[i];
h[i]--;
G[ N ].push_back( (edge){ h[i], tmp - d[i] } );
}
vector<ll> dist( N+1 , (1LL<<60) );
dist[ N ] = 0;
typedef pair<ll,ll> P;
priority_queue< P , vector<P> , greater<P> > Q;
Q.push( P(0,N) );
while(!Q.empty()){
P p=Q.top();
Q.pop();
ll pos=p.second;
ll cost=p.first;
if( dist[pos] < cost )continue;
for(int i=0;i<(int)G[pos].size();i++){
edge e=G[pos][i];
if( cost + e.cost < dist[ e.to ] ){
dist[ e.to ] = cost + e.cost;
Q.push( P( dist[e.to] , e.to ) );
}
}
}
ll ans=0;
for(int i=0;i<N;i++)
if( dist[i] <= tmp )ans++;
cout<<ans<<endl;
return 0;
}