結果

提出番号 2038
提出者 _ei1333
言語 C++
提出日時 2018-08-04 15:02:02
問題名 (73)観光計画
結果 WA
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 129ms 36752KB
2 AC 100% 149ms 40240KB
3 AC 100% 50ms 26000KB
4 AC 100% 217ms 50272KB
5 AC 100% 132ms 34928KB
6 AC 100% 187ms 46448KB
7 AC 100% 146ms 45168KB
8 AC 100% 167ms 43840KB
9 AC 100% 207ms 33568KB
10 AC 100% 234ms 51552KB
11 AC 100% 110ms 34400KB
12 AC 100% 29ms 21488KB
13 AC 100% 86ms 30304KB
14 AC 100% 234ms 52880KB
15 AC 100% 144ms 39024KB
16 AC 100% 190ms 46368KB
17 AC 100% 191ms 44048KB
18 AC 100% 143ms 39024KB
19 AC 100% 31ms 19280KB
20 AC 100% 90ms 31408KB
21 AC 100% 118ms 29712KB
22 AC 100% 88ms 30720KB
23 AC 100% 77ms 32368KB
24 AC 100% 255ms 58624KB
25 AC 100% 153ms 44224KB
26 AC 100% 189ms 52512KB
27 AC 100% 50ms 23600KB
28 WA 0% 51ms 25072KB
29 AC 100% 144ms 39760KB
30 WA 0% 73ms 29312KB
31 AC 100% 257ms 55072KB
32 AC 100% 174ms 43200KB
33 AC 100% 29ms 18848KB
34 AC 100% 186ms 51904KB
35 AC 100% 28ms 19744KB
36 AC 100% 130ms 45536KB
37 AC 100% 87ms 30192KB
38 AC 100% 23ms 18544KB
39 AC 100% 198ms 57456KB
40 AC 100% 31ms 21056KB
41 AC 100% 205ms 55184KB
42 AC 100% 59ms 24592KB
43 AC 100% 248ms 57776KB
44 AC 100% 134ms 39440KB
45 AC 100% 151ms 39584KB
46 AC 100% 178ms 44752KB
47 AC 100% 235ms 57296KB
48 AC 100% 247ms 57168KB
49 AC 100% 152ms 41600KB
50 AC 100% 169ms 46368KB
51 AC 100% 53ms 24544KB
52 AC 100% 120ms 37184KB
53 AC 100% 68ms 25552KB
54 AC 100% 234ms 48448KB
55 AC 100% 40ms 22128KB
56 AC 100% 116ms 36816KB
57 AC 100% 64ms 26048KB
58 AC 100% 88ms 28688KB
59 AC 100% 46ms 20784KB
60 AC 100% 56ms 25776KB
61 AC 100% 90ms 29888KB
62 AC 100% 197ms 50224KB
63 WA 0% 149ms 41600KB
64 AC 100% 178ms 49248KB
65 AC 100% 196ms 47424KB
66 AC 100% 6ms 15664KB
67 WA 0% 88ms 31408KB
68 WA 0% 105ms 35184KB
69 AC 100% 286ms 61520KB
70 AC 100% 157ms 42496KB

ソースコード

#include <bits/stdc++.h>
#define rep(i, a, n) for(int i = a; i < n; i++)
#define int long long
#define chmin(a, b) a = min(a, b)
using namespace std;
typedef pair<int, int> P;
const int INF = 1e15;

struct edge{
   int to, cost;
};
int n, m, k;
vector<edge> G[100010]; 
int d[100010];

void dfs(int v, int p, int now){
    if(d[v] > now) return;
    d[v] = now;
    rep(i, 0, G[v].size()){
        int nxtv = G[v][i].to;
        int nxtn = now - G[v][i].cost;
        if(nxtv == p || nxtn < 0) continue;
        dfs(nxtv, v, nxtn);
    }
}

signed main(){
    cin >> n >> m >> k;
    rep(i, 0, m){
        int a, b, c;
        cin >> a >> b >> c;
        a--; b--;
        G[a].push_back({b, c});
        G[b].push_back({a, c});
    }
    vector<P> h(k); 
    rep(i, 0, k){
        cin >> h[i].second >> h[i].first;
        h[i].second--;
    }
    sort(h.rbegin(), h.rend());
    rep(i, 0, k){
        dfs(h[i].second, -1, h[i].first);
    }
    int ans = 0;
    rep(i, 0, n) if(d[i] > 0) ans++;
    cout << ans << endl;
}