結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 47ms 30080KB
2 WA 0% 55ms 34688KB
3 WA 0% 24ms 21648KB
4 WA 0% 60ms 44880KB
5 AC 100% 38ms 26576KB
6 AC 100% 64ms 39760KB
7 WA 0% 60ms 43136KB
8 WA 0% 91ms 43936KB
9 AC 100% 34ms 24768KB
10 WA 0% 90ms 47584KB
11 WA 0% 35ms 27984KB
12 WA 0% 14ms 17424KB
13 WA 0% 34ms 29936KB
14 WA 0% 86ms 48512KB
15 WA 0% 60ms 36176KB
16 WA 0% 59ms 39472KB
17 WA 0% 85ms 41696KB
18 WA 0% 57ms 32672KB
19 WA 0% 13ms 15296KB
20 WA 0% 39ms 30016KB
21 AC 100% 18ms 20096KB
22 WA 0% 36ms 26480KB
23 WA 0% 51ms 28048KB
24 WA 0% 100ms 58640KB
25 WA 0% 74ms 39920KB
26 WA 0% 85ms 48368KB
27 WA 0% 18ms 18224KB
28 WA 0% 20ms 17280KB
29 WA 0% 54ms 32864KB
30 WA 0% 35ms 28320KB
31 WA 0% 100ms 51328KB
32 WA 0% 56ms 36512KB
33 WA 0% 11ms 11664KB
34 WA 0% 76ms 45568KB
35 WA 0% 10ms 11968KB
36 AC 100% 61ms 44880KB
37 WA 0% 30ms 23840KB
38 WA 0% 11ms 9760KB
39 WA 0% 93ms 58240KB
40 WA 0% 11ms 16688KB
41 WA 0% 93ms 49920KB
42 WA 0% 24ms 17600KB
43 WA 0% 102ms 52448KB
44 WA 0% 55ms 34720KB
45 WA 0% 61ms 35952KB
46 WA 0% 64ms 38384KB
47 WA 0% 77ms 53248KB
48 WA 0% 129ms 51872KB
49 WA 0% 50ms 34464KB
50 WA 0% 71ms 44960KB
51 WA 0% 16ms 16368KB
52 WA 0% 41ms 31184KB
53 WA 0% 27ms 18368KB
54 AC 100% 62ms 40512KB
55 WA 0% 17ms 16912KB
56 WA 0% 50ms 37952KB
57 WA 0% 26ms 26224KB
58 WA 0% 34ms 22944KB
59 WA 0% 25ms 16336KB
60 WA 0% 26ms 20944KB
61 WA 0% 33ms 24368KB
62 WA 0% 66ms 43760KB
63 WA 0% 59ms 42736KB
64 WA 0% 74ms 43376KB
65 WA 0% 87ms 42384KB
66 AC 100% 3ms 9424KB
67 WA 0% 41ms 28592KB
68 WA 0% 42ms 36528KB
69 WA 0% 94ms 58944KB
70 WA 0% 51ms 36416KB

ソースコード

// 基本テンプレート
 
#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 visited[100010], dist[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));
    }

    while(K--) {
        int source, max_d;
        scanf("%lld%lld", &source, &max_d);
        source--;

        priority_queue<Elem> que;
        que.push(Elem{source, 0});
        visited[source] = true;

        while(que.size()) {
            Elem cur = que.top(); que.pop();

            int u = cur.pos, cost = cur.cost;
            if(dist[u] < cost) continue;

            for(auto e : G[u]) {
                int v = e.first, weight = e.second;

                int n_dist = cost + weight;
                if(n_dist > max_d) continue;
                if(dist[v] > n_dist) continue;
                if(visited[v]) continue;

                visited[v] = true;
                dist[v] = n_dist;
                que.push(Elem{v, n_dist});
            }
        }
    }

    int ans = 0;
    for(int i=0; i<N; i++) if(visited[i]) ans++;
    printf("%lld\n", ans);
    return 0;
}