結果

提出番号 1787
提出者 ecasdqina
言語 C++
提出日時 2018-08-04 13:52:59
問題名 (73)観光計画
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 116ms 22240KB
2 AC 100% 137ms 27392KB
3 AC 100% 63ms 19088KB
4 AC 100% 182ms 30832KB
5 AC 100% 96ms 18832KB
6 AC 100% 134ms 27712KB
7 AC 100% 154ms 35632KB
8 AC 100% 194ms 37808KB
9 AC 100% 89ms 15408KB
10 AC 100% 231ms 42672KB
11 AC 100% 101ms 21472KB
12 AC 100% 30ms 15920KB
13 AC 100% 86ms 26944KB
14 AC 100% 203ms 34928KB
15 AC 100% 155ms 32768KB
16 AC 100% 146ms 25440KB
17 AC 100% 182ms 41392KB
18 AC 100% 142ms 27136KB
19 AC 100% 34ms 18192KB
20 AC 100% 95ms 28688KB
21 AC 100% 56ms 13296KB
22 AC 100% 80ms 21808KB
23 AC 100% 100ms 23136KB
24 AC 100% 253ms 48816KB
25 AC 100% 181ms 38736KB
26 AC 100% 207ms 36496KB
27 AC 100% 45ms 16560KB
28 AC 100% 86ms 13520KB
29 AC 100% 132ms 25136KB
30 AC 100% 81ms 28976KB
31 AC 100% 204ms 44224KB
32 AC 100% 135ms 24176KB
33 AC 100% 29ms 11648KB
34 AC 100% 174ms 32768KB
35 AC 100% 29ms 10784KB
36 AC 100% 167ms 36224KB
37 AC 100% 85ms 19616KB
38 AC 100% 20ms 8528KB
39 AC 100% 237ms 43952KB
40 AC 100% 33ms 14864KB
41 AC 100% 221ms 35296KB
42 AC 100% 59ms 16496KB
43 AC 100% 220ms 43232KB
44 AC 100% 201ms 27104KB
45 AC 100% 152ms 31232KB
46 AC 100% 158ms 28880KB
47 AC 100% 217ms 36592KB
48 AC 100% 192ms 36144KB
49 AC 100% 126ms 23136KB
50 AC 100% 179ms 36304KB
51 AC 100% 50ms 12688KB
52 AC 100% 112ms 22848KB
53 AC 100% 71ms 17552KB
54 AC 100% 146ms 25984KB
55 AC 100% 40ms 15920KB
56 AC 100% 124ms 30912KB
57 AC 100% 75ms 27440KB
58 AC 100% 86ms 22528KB
59 AC 100% 51ms 19664KB
60 AC 100% 60ms 18032KB
61 AC 100% 87ms 21040KB
62 AC 100% 163ms 31008KB
63 AC 100% 135ms 36752KB
64 AC 100% 195ms 34208KB
65 AC 100% 186ms 32160KB
66 AC 100% 5ms 8528KB
67 AC 100% 100ms 29152KB
68 AC 100% 122ms 31392KB
69 AC 100% 276ms 50544KB
70 AC 100% 132ms 27888KB

ソースコード

#include <bits/stdc++.h>
typedef long long i64;
using std::cout;
using std::endl;
using std::cin;

std::vector<std::vector<std::pair<int, int>>> g;
int n, m, k;

int solve() {
	std::priority_queue<std::pair<i64, int>, std::vector<std::pair<i64, int>>, std::greater<std::pair<i64, int>>> qu;
	std::vector<i64> min_cost(n + 1, 1e18);
	qu.push({1e9, n});
	
	while(!qu.empty()) {
		auto p = qu.top(); qu.pop();
		
		for(auto e : g[p.second]) {
			if(e.second + p.first >= min_cost[e.first]) continue;
			min_cost[e.first] = e.second + p.first;
			qu.push({min_cost[e.first], e.first});
		}
	}
	
	int c = 0;
	for(int i = 0; i < n; i++) if(min_cost[i] <= 1e9) c++;
	return c;
}

int main(){
	cin >> n >> m >> k; g.resize(n + 1);
	for(int i = 0; i < m; i++) {
		int a, b, c; cin >> a >> b >> c;
		
		g[a - 1].push_back({b - 1, c});
		g[b - 1].push_back({a - 1, c});
	}
	for(int i = 0; i < k; i++) {
		int a, c; cin >> a >> c;
		
		g[n].push_back({a - 1, -c});
	}
	
	cout << solve() << endl;
	return 0;
}