結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 120ms 41968KB
2 WA 0% 144ms 45232KB
3 WA 0% 67ms 27760KB
4 AC 100% 185ms 55184KB
5 AC 100% 90ms 37568KB
6 AC 100% 234ms 51712KB
7 WA 0% 156ms 53728KB
8 WA 0% 185ms 53216KB
9 AC 100% 92ms 34400KB
10 WA 0% 229ms 67472KB
11 WA 0% 102ms 36848KB
12 WA 0% 35ms 22368KB
13 WA 0% 90ms 34576KB
14 WA 0% 220ms 58464KB
15 WA 0% 158ms 48832KB
16 AC 100% 134ms 49456KB
17 WA 0% 210ms 60928KB
18 WA 0% 125ms 46704KB
19 WA 0% 36ms 27296KB
20 WA 0% 102ms 35776KB
21 AC 100% 58ms 30272KB
22 WA 0% 90ms 33776KB
23 WA 0% 97ms 34832KB
24 WA 0% 230ms 69168KB
25 WA 0% 185ms 60240KB
26 WA 0% 224ms 61040KB
27 WA 0% 56ms 25920KB
28 WA 0% 53ms 26480KB
29 WA 0% 123ms 44688KB
30 WA 0% 152ms 38944KB
31 WA 0% 251ms 67152KB
32 AC 100% 146ms 46400KB
33 WA 0% 31ms 21072KB
34 WA 0% 202ms 56928KB
35 WA 0% 36ms 21200KB
36 WA 0% 168ms 50112KB
37 WA 0% 82ms 33520KB
38 WA 0% 20ms 19216KB
39 WA 0% 267ms 62816KB
40 WA 0% 35ms 21200KB
41 WA 0% 218ms 61040KB
42 WA 0% 61ms 28464KB
43 WA 0% 246ms 69504KB
44 WA 0% 141ms 44064KB
45 WA 0% 158ms 48944KB
46 WA 0% 163ms 49776KB
47 WA 0% 233ms 61408KB
48 WA 0% 212ms 63024KB
49 AC 100% 110ms 43856KB
50 WA 0% 175ms 52016KB
51 WA 0% 43ms 25552KB
52 WA 0% 120ms 39472KB
53 WA 0% 71ms 30368KB
54 AC 100% 169ms 50976KB
55 WA 0% 45ms 24048KB
56 WA 0% 141ms 39984KB
57 WA 0% 70ms 34512KB
58 WA 0% 90ms 36608KB
59 WA 0% 51ms 30352KB
60 WA 0% 68ms 27536KB
61 WA 0% 95ms 33776KB
62 AC 100% 181ms 55696KB
63 WA 0% 166ms 47424KB
64 WA 0% 199ms 58720KB
65 WA 0% 313ms 53056KB
66 WA 0% 6ms 15920KB
67 WA 0% 179ms 40992KB
68 WA 0% 111ms 39088KB
69 WA 0% 279ms 77920KB
70 WA 0% 152ms 46496KB

ソースコード

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct edge{
  ll to,cost;
  edge(ll to,ll cost) : to(to), cost(cost) {}
};

ll N,M,K;
vector< ll > d,h;
vector< edge > G[100005];


int main(){
  cin>>N>>M>>K;
  for(int i=0;i<M;i++){
    ll a,b,c;
    cin>>a>>b>>c;
    a--,b--;
    G[a].push_back( edge(b,c) );
    G[b].push_back( edge(a,b) );
  }
  
  h.resize(K);
  d.resize(K);

  const ll tmp = (1LL<<30);
  
  for(int i=0;i<K;i++){
    cin>>h[i]>>d[i];
    h[i]--;

    G[ N ].push_back( (edge){ h[i], tmp - d[i] } );
  }

  vector<ll> dist( N+1 , (1LL<<60) );
  dist[ N ] = 0;
  typedef pair<ll,ll> P;
  priority_queue< P , vector<P> , greater<P> > Q;
  Q.push( P(0,N) );
  while(!Q.empty()){
    P p=Q.top();
    Q.pop();
    ll pos=p.second;
    ll cost=p.first;
    if( dist[pos] < cost )continue;
    for(int i=0;i<(int)G[pos].size();i++){
      edge e=G[pos][i];
      if( cost + e.cost < dist[ e.to ] ){
        dist[ e.to ] = cost + e.cost;
        Q.push( P( dist[e.to] , e.to ) );
      }
    }
  }

  ll ans=0;
  for(int i=0;i<N;i++)
    if( dist[i] <= tmp )ans++;
  cout<<ans<<endl;
  return 0;
}