| 提出番号 | 1885 |
|---|---|
| 提出者 | akemi_homura |
| 言語 | C++ |
| 提出日時 | 2018-08-04 14:22:06 |
| 問題名 | (73)観光計画 |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 55ms | 31232KB |
| 2 | AC | 100% | 62ms | 37216KB |
| 3 | AC | 100% | 26ms | 21520KB |
| 4 | AC | 100% | 79ms | 46336KB |
| 5 | AC | 100% | 32ms | 27904KB |
| 6 | AC | 100% | 65ms | 41792KB |
| 7 | AC | 100% | 69ms | 44304KB |
| 8 | AC | 100% | 73ms | 44928KB |
| 9 | AC | 100% | 32ms | 25200KB |
| 10 | AC | 100% | 108ms | 53008KB |
| 11 | AC | 100% | 45ms | 29296KB |
| 12 | AC | 100% | 12ms | 16960KB |
| 13 | AC | 100% | 33ms | 29664KB |
| 14 | AC | 100% | 96ms | 50288KB |
| 15 | AC | 100% | 71ms | 37312KB |
| 16 | AC | 100% | 52ms | 40016KB |
| 17 | AC | 100% | 94ms | 46592KB |
| 18 | AC | 100% | 62ms | 35072KB |
| 19 | AC | 100% | 16ms | 17072KB |
| 20 | AC | 100% | 43ms | 29712KB |
| 21 | AC | 100% | 21ms | 21184KB |
| 22 | AC | 100% | 39ms | 27184KB |
| 23 | AC | 100% | 41ms | 27936KB |
| 24 | AC | 100% | 123ms | 59360KB |
| 25 | AC | 100% | 73ms | 45392KB |
| 26 | AC | 100% | 96ms | 50400KB |
| 27 | AC | 100% | 22ms | 19072KB |
| 28 | AC | 100% | 20ms | 17440KB |
| 29 | AC | 100% | 49ms | 35520KB |
| 30 | AC | 100% | 35ms | 29264KB |
| 31 | AC | 100% | 96ms | 56816KB |
| 32 | AC | 100% | 57ms | 37008KB |
| 33 | AC | 100% | 11ms | 12368KB |
| 34 | AC | 100% | 88ms | 48272KB |
| 35 | AC | 100% | 13ms | 12624KB |
| 36 | AC | 100% | 63ms | 44432KB |
| 37 | AC | 100% | 39ms | 25296KB |
| 38 | AC | 100% | 9ms | 9984KB |
| 39 | AC | 100% | 112ms | 58928KB |
| 40 | AC | 100% | 13ms | 16192KB |
| 41 | AC | 100% | 101ms | 51776KB |
| 42 | AC | 100% | 26ms | 19136KB |
| 43 | AC | 100% | 109ms | 58448KB |
| 44 | AC | 100% | 55ms | 35712KB |
| 45 | AC | 100% | 72ms | 37488KB |
| 46 | AC | 100% | 70ms | 41232KB |
| 47 | AC | 100% | 105ms | 55056KB |
| 48 | AC | 100% | 104ms | 53488KB |
| 49 | AC | 100% | 44ms | 35536KB |
| 50 | AC | 100% | 91ms | 46352KB |
| 51 | AC | 100% | 20ms | 16944KB |
| 52 | AC | 100% | 43ms | 32272KB |
| 53 | AC | 100% | 30ms | 19760KB |
| 54 | AC | 100% | 61ms | 41712KB |
| 55 | AC | 100% | 17ms | 17120KB |
| 56 | AC | 100% | 53ms | 36256KB |
| 57 | AC | 100% | 30ms | 27296KB |
| 58 | AC | 100% | 40ms | 25584KB |
| 59 | AC | 100% | 23ms | 18128KB |
| 60 | AC | 100% | 23ms | 20672KB |
| 61 | AC | 100% | 36ms | 25616KB |
| 62 | AC | 100% | 70ms | 45808KB |
| 63 | AC | 100% | 67ms | 43648KB |
| 64 | AC | 100% | 89ms | 45600KB |
| 65 | AC | 100% | 80ms | 44544KB |
| 66 | AC | 100% | 3ms | 8512KB |
| 67 | AC | 100% | 45ms | 29632KB |
| 68 | AC | 100% | 50ms | 35920KB |
| 69 | AC | 100% | 135ms | 64240KB |
| 70 | AC | 100% | 65ms | 37872KB |
// 基本テンプレート
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <string>
#include <cstring>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <complex>
#include <cmath>
#include <limits>
#include <cfloat>
#include <climits>
#include <ctime>
#include <cassert>
#include <numeric>
#include <fstream>
#include <functional>
using namespace std;
#define rep(i,a,n) for(int (i)=(a); (i)<(n); (i)++)
#define repq(i,a,n) for(int (i)=(a); (i)<=(n); (i)++)
#define repr(i,a,n) for(int (i)=(a); (i)>=(n); (i)--)
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define int long long int
template<typename T> void chmax(T &a, T b) {a = max(a, b);}
template<typename T> void chmin(T &a, T b) {a = min(a, b);}
template<typename T> void chadd(T &a, T b) {a = a + b;}
typedef pair<int, int> pii;
typedef long long ll;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
const ll INF = 1001001001001001LL;
const ll MOD = 1000000007LL;
int N, M, K;
int max_d[100010];
using Graph = vector< vector<pii> >;
struct Elem {
int pos, cost;
bool operator<(const Elem &e) const {
return cost < e.cost;
}
};
signed main() {
scanf("%lld%lld%lld", &N, &M, &K);
Graph G(N);
for(int i=0; i<M; i++) {
int a, b, c; scanf("%lld%lld%lld", &a, &b, &c);
a--; b--;
G[a].push_back(make_pair(b, c));
G[b].push_back(make_pair(a, c));
}
fill(max_d, max_d + N, -1);
priority_queue<Elem> que;
while(K--) {
int source, d;
scanf("%lld%lld", &source, &d);
source--;
max_d[source] = d;
que.push(Elem{source, d});
}
while(que.size()) {
Elem cur = que.top(); que.pop();
int u = cur.pos, cost = cur.cost;
if(max_d[u] > cost) continue;
for(auto e : G[u]) {
int v = e.first, weight = e.second;
int n_dist = cost - weight;
if(n_dist < 0) continue;
if(max_d[v] > n_dist) continue;
max_d[v] = n_dist;
que.push(Elem{v, n_dist});
}
}
int ans = 0;
for(int i=0; i<N; i++) if(max_d[i] >= 0) ans++;
printf("%lld\n", ans);
return 0;
}