結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 124ms 38272KB
2 AC 100% 150ms 42928KB
3 AC 100% 66ms 26464KB
4 AC 100% 194ms 53264KB
5 AC 100% 109ms 36464KB
6 AC 100% 144ms 49456KB
7 AC 100% 178ms 46304KB
8 AC 100% 175ms 45040KB
9 AC 100% 95ms 33968KB
10 AC 100% 218ms 55248KB
11 AC 100% 94ms 36032KB
12 AC 100% 36ms 21584KB
13 AC 100% 86ms 31200KB
14 AC 100% 228ms 55328KB
15 AC 100% 136ms 39056KB
16 AC 100% 156ms 47984KB
17 AC 100% 202ms 47168KB
18 AC 100% 148ms 40528KB
19 AC 100% 33ms 20656KB
20 AC 100% 88ms 33088KB
21 AC 100% 60ms 30160KB
22 AC 100% 90ms 32480KB
23 AC 100% 87ms 33968KB
24 AC 100% 262ms 64192KB
25 AC 100% 181ms 47728KB
26 AC 100% 191ms 54304KB
27 AC 100% 47ms 24400KB
28 AC 100% 58ms 26080KB
29 AC 100% 133ms 42688KB
30 AC 100% 99ms 30128KB
31 AC 100% 247ms 59264KB
32 AC 100% 125ms 44832KB
33 AC 100% 31ms 19632KB
34 AC 100% 180ms 54384KB
35 AC 100% 27ms 20176KB
36 AC 100% 150ms 50112KB
37 AC 100% 96ms 31840KB
38 AC 100% 20ms 19216KB
39 AC 100% 247ms 59584KB
40 AC 100% 31ms 21312KB
41 AC 100% 244ms 57360KB
42 AC 100% 55ms 25728KB
43 AC 100% 224ms 62384KB
44 AC 100% 148ms 43024KB
45 AC 100% 154ms 40592KB
46 AC 100% 169ms 47568KB
47 AC 100% 200ms 60400KB
48 AC 100% 242ms 59120KB
49 AC 100% 135ms 43408KB
50 AC 100% 195ms 48320KB
51 AC 100% 50ms 25536KB
52 AC 100% 123ms 38992KB
53 AC 100% 68ms 25968KB
54 AC 100% 164ms 50016KB
55 AC 100% 40ms 22608KB
56 AC 100% 112ms 38560KB
57 AC 100% 72ms 27792KB
58 AC 100% 91ms 30688KB
59 AC 100% 54ms 21648KB
60 AC 100% 61ms 26464KB
61 AC 100% 83ms 31184KB
62 AC 100% 197ms 52640KB
63 AC 100% 145ms 43648KB
64 AC 100% 203ms 49856KB
65 AC 100% 194ms 49552KB
66 AC 100% 5ms 15792KB
67 AC 100% 112ms 31120KB
68 AC 100% 120ms 36160KB
69 AC 100% 317ms 64656KB
70 AC 100% 144ms 45712KB

ソースコード

#include<iostream>
#include<string>
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
#include<functional>
#include<iomanip>
#include<queue>
#include<ciso646>
#include<random>
#include<map>
#include<set>
#include<complex>
#include<bitset>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
const ll MOD = (1e+9)+7;
const ll INF = (ll)1000000007 * 1000000007;
typedef pair<ll, int> P;
#define stop char nyaa;cin>>nyaa;
#define rep(i,n) for(int i=0;i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define Rep(i,sta,n) for(int i=sta;i<n;i++)
#define rep1(i,n) for(int i=1;i<=n;i++)
#define per1(i,n) for(int i=n;i>=1;i--)
#define Rep1(i,sta,n) for(int i=sta;i<=n;i++)
typedef long double ld;
typedef complex<ld> Point;
const ld eps = 1e-11;
const ld pi = acos(-1.0);
typedef pair<ll, ll> LP;
typedef pair<ld, ld> LDP;
typedef pair<P, int> PP;
struct edge { int to; ll cost; };
ll d[100000]; vector<edge> G[100000];
int main(){
	int n, m; cin >> n >> m;
	int k; cin >> k;
	rep(i, m) {
		int a, b; cin >> a >> b; ll c; cin >> c; a--; b--;
		G[a].push_back({ b,c });
		G[b].push_back({ a,c });
	}
	fill(d, d + n, INF);
	priority_queue<P, vector<P>, greater<P>> q;
	rep(i, k) {
		int h; ll dd; cin >> h >> dd; h--;
		d[h] = -dd; q.push({ -dd,h });
	}
	while (!q.empty()) {
		P p = q.top(); q.pop();
		int v = p.second;
		if (d[v] < p.first)continue;
		rep(i, (int)G[v].size()) {
			edge e = G[v][i];
			if (d[e.to] > d[v] + e.cost) {
				d[e.to] = d[v] + e.cost;
				q.push({ d[e.to],e.to });
			}
		}
	}
	int cnt = 0;
	rep(i, n) {
		if (d[i] <= 0)cnt++;
	}
	cout << cnt << endl;
	return 0;
}