結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 125ms 32800KB
2 AC 100% 151ms 37216KB
3 AC 100% 57ms 24112KB
4 AC 100% 189ms 46320KB
5 AC 100% 99ms 27904KB
6 AC 100% 155ms 41792KB
7 AC 100% 164ms 48480KB
8 AC 100% 192ms 49104KB
9 AC 100% 78ms 25424KB
10 AC 100% 229ms 52976KB
11 AC 100% 104ms 30864KB
12 AC 100% 38ms 19808KB
13 AC 100% 104ms 35408KB
14 AC 100% 212ms 54464KB
15 AC 100% 166ms 41488KB
16 AC 100% 161ms 41584KB
17 AC 100% 205ms 46592KB
18 AC 100% 128ms 35040KB
19 AC 100% 32ms 17056KB
20 AC 100% 106ms 35472KB
21 AC 100% 49ms 21200KB
22 AC 100% 81ms 28736KB
23 AC 100% 85ms 30496KB
24 AC 100% 275ms 63536KB
25 AC 100% 199ms 45376KB
26 AC 100% 223ms 54576KB
27 AC 100% 54ms 21168KB
28 AC 100% 52ms 19104KB
29 AC 100% 134ms 35504KB
30 AC 100% 90ms 33456KB
31 AC 100% 220ms 56800KB
32 AC 100% 120ms 38560KB
33 AC 100% 32ms 13392KB
34 AC 100% 194ms 48272KB
35 AC 100% 27ms 13904KB
36 AC 100% 150ms 52240KB
37 AC 100% 106ms 26848KB
38 AC 100% 22ms 10480KB
39 AC 100% 267ms 63104KB
40 AC 100% 36ms 19360KB
41 AC 100% 191ms 55952KB
42 AC 100% 62ms 19120KB
43 AC 100% 259ms 58400KB
44 AC 100% 142ms 37280KB
45 AC 100% 137ms 41664KB
46 AC 100% 158ms 41248KB
47 AC 100% 241ms 59232KB
48 AC 100% 226ms 57680KB
49 AC 100% 139ms 37088KB
50 AC 100% 190ms 50528KB
51 AC 100% 52ms 18224KB
52 AC 100% 123ms 33840KB
53 AC 100% 64ms 21312KB
54 AC 100% 138ms 41696KB
55 AC 100% 42ms 19712KB
56 AC 100% 112ms 43056KB
57 AC 100% 83ms 31472KB
58 AC 100% 78ms 25552KB
59 AC 100% 50ms 18112KB
60 AC 100% 61ms 23520KB
61 AC 100% 95ms 27184KB
62 AC 100% 198ms 45792KB
63 AC 100% 166ms 47824KB
64 AC 100% 201ms 49792KB
65 AC 100% 201ms 48720KB
66 AC 100% 9ms 11216KB
67 AC 100% 111ms 33824KB
68 AC 100% 126ms 41632KB
69 AC 100% 277ms 64240KB
70 AC 100% 127ms 39424KB

ソースコード

#include<bits/stdc++.h>
using namespace std;
using Int = long long;

template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}

//INSERT ABOVE HERE
signed main(){
  Int n,m,k;
  cin>>n>>m>>k;
  using P = pair<Int, Int>;
  vector<vector<P> > G(n);
  for(Int i=0;i<m;i++){
    Int a,b,c;
    cin>>a>>b>>c;
    a--;b--;
    G[a].emplace_back(b,c);
    G[b].emplace_back(a,c);    
  }
  
  vector<Int> dp(n,-1);
  for(Int i=0;i<k;i++){
    Int x,y;
    cin>>x>>y;
    x--;
    chmax(dp[x],y);
  }
  
  priority_queue<P> pq;
  for(Int i=0;i<n;i++){
    if(!dp[i]) continue;
    pq.emplace(dp[i],i);
  }

  while(!pq.empty()){
    Int d,v;
    tie(d,v)=pq.top();pq.pop();
    if(d<dp[v]) continue;
    for(P e:G[v]){
      Int u,c;
      tie(u,c)=e;
      if(dp[u]<dp[v]-c){
	dp[u]=dp[v]-c;
	pq.emplace(dp[u],u);
      }
    }    
  }
  
  Int ans=0;
  for(Int i=0;i<n;i++) ans+=dp[i]>=0;
  cout<<ans<<endl;
  return 0;
}