結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 122ms 40592KB
2 AC 100% 153ms 44832KB
3 AC 100% 60ms 27920KB
4 AC 100% 163ms 55600KB
5 AC 100% 86ms 39328KB
6 AC 100% 159ms 52000KB
7 AC 100% 158ms 46944KB
8 AC 100% 175ms 45088KB
9 AC 100% 83ms 37024KB
10 AC 100% 229ms 55984KB
11 AC 100% 109ms 38272KB
12 AC 100% 29ms 23296KB
13 AC 100% 72ms 31744KB
14 AC 100% 218ms 57040KB
15 AC 100% 161ms 39648KB
16 AC 100% 157ms 50656KB
17 AC 100% 162ms 47344KB
18 AC 100% 142ms 42304KB
19 AC 100% 54ms 21856KB
20 AC 100% 100ms 32144KB
21 AC 100% 53ms 33248KB
22 AC 100% 82ms 34240KB
23 AC 100% 99ms 34608KB
24 AC 100% 228ms 60192KB
25 AC 100% 181ms 48496KB
26 AC 100% 191ms 55584KB
27 AC 100% 52ms 26464KB
28 AC 100% 54ms 28128KB
29 AC 100% 115ms 45072KB
30 AC 100% 79ms 30416KB
31 AC 100% 236ms 60048KB
32 AC 100% 150ms 47424KB
33 AC 100% 31ms 22048KB
34 AC 100% 210ms 56416KB
35 AC 100% 26ms 22688KB
36 AC 100% 129ms 47184KB
37 AC 100% 77ms 34000KB
38 AC 100% 19ms 22192KB
39 AC 100% 252ms 59792KB
40 AC 100% 33ms 23040KB
41 AC 100% 224ms 59216KB
42 AC 100% 62ms 27920KB
43 AC 100% 250ms 63712KB
44 AC 100% 136ms 43344KB
45 AC 100% 151ms 41600KB
46 AC 100% 171ms 49648KB
47 AC 100% 204ms 62176KB
48 AC 100% 205ms 60992KB
49 AC 100% 110ms 46048KB
50 AC 100% 190ms 48976KB
51 AC 100% 43ms 28048KB
52 AC 100% 101ms 41232KB
53 AC 100% 72ms 28048KB
54 AC 100% 138ms 52752KB
55 AC 100% 45ms 24448KB
56 AC 100% 120ms 38080KB
57 AC 100% 72ms 27952KB
58 AC 100% 77ms 32400KB
59 AC 100% 53ms 22832KB
60 AC 100% 61ms 28048KB
61 AC 100% 94ms 33040KB
62 AC 100% 168ms 54912KB
63 AC 100% 135ms 43648KB
64 AC 100% 215ms 51264KB
65 AC 100% 163ms 51216KB
66 AC 100% 5ms 17920KB
67 AC 100% 97ms 31616KB
68 AC 100% 91ms 36240KB
69 AC 100% 300ms 64768KB
70 AC 100% 145ms 46224KB

ソースコード

#include <bits/stdc++.h>
#define int long long
using namespace std;

typedef pair<int,int> P;

int N, M, K, maxcost[100005];
vector<P> G[100005];
priority_queue<P> Q;

void solve(){

  while(!Q.empty()){
    
    P t = Q.top(); Q.pop();
    
    int node = t.second;
    int cost = t.first;
    
    if( maxcost[node] > cost ) continue;
    
    for(int i=0;i<(int)G[node].size();i++){
      
      int nnode = G[node][i].first;
      int ncost = cost - G[node][i].second;
      
      if( ncost < 0 ) continue;
      
      if( maxcost[nnode] < ncost ){
	maxcost[nnode] = ncost;
	Q.push(P( ncost, nnode ));
      }
      
    }
    
  }
  
  int ans = 0;

  for(int i=0;i<N;i++) ans += maxcost[i] != -1;
  
  cout<<ans<<endl;
  
}

signed main(){
  
  cin>>N>>M>>K;
  
  for(int i=0;i<M;i++){
    int a, b, c;
    cin>>a>>b>>c;
    G[a-1].push_back(P( b-1, c ));
    G[b-1].push_back(P( a-1, c ));
  }
    
  memset( maxcost, -1, sizeof( maxcost ) );
  
  for(int i=0;i<K;i++){
    int h, d;
    cin>>h>>d;
    maxcost[h-1] = max( maxcost[h-1], d );
    Q.push(P( d, h - 1 ));
  }
  
  solve();
  
  return 0;
}