結果

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

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 114ms 37872KB
2 WA 0% 119ms 41760KB
3 WA 0% 53ms 25904KB
4 WA 0% 188ms 51344KB
5 AC 100% 103ms 35072KB
6 AC 100% 154ms 47584KB
7 WA 0% 166ms 45904KB
8 WA 0% 161ms 44176KB
9 AC 100% 93ms 33712KB
10 WA 0% 210ms 55120KB
11 WA 0% 105ms 35472KB
12 WA 0% 30ms 21600KB
13 WA 0% 82ms 30752KB
14 WA 0% 203ms 53824KB
15 WA 0% 155ms 38912KB
16 WA 0% 148ms 46816KB
17 WA 0% 178ms 46480KB
18 WA 0% 140ms 40880KB
19 WA 0% 33ms 20672KB
20 WA 0% 91ms 31920KB
21 AC 100% 61ms 29904KB
22 WA 0% 93ms 31168KB
23 WA 0% 89ms 33136KB
24 WA 0% 235ms 60416KB
25 WA 0% 183ms 47552KB
26 WA 0% 202ms 54384KB
27 WA 0% 45ms 24352KB
28 WA 0% 50ms 25328KB
29 WA 0% 111ms 40800KB
30 WA 0% 88ms 30176KB
31 WA 0% 197ms 54960KB
32 WA 0% 137ms 43632KB
33 WA 0% 29ms 19440KB
34 WA 0% 170ms 52160KB
35 WA 0% 29ms 20064KB
36 AC 100% 147ms 45536KB
37 WA 0% 74ms 31488KB
38 WA 0% 23ms 18912KB
39 WA 0% 253ms 59584KB
40 WA 0% 26ms 21328KB
41 WA 0% 227ms 55760KB
42 WA 0% 50ms 25280KB
43 WA 0% 253ms 58480KB
44 WA 0% 135ms 41392KB
45 WA 0% 154ms 40240KB
46 WA 0% 136ms 45456KB
47 WA 0% 209ms 58848KB
48 WA 0% 217ms 57488KB
49 WA 0% 110ms 42400KB
50 WA 0% 170ms 48288KB
51 WA 0% 49ms 25296KB
52 WA 0% 115ms 38080KB
53 WA 0% 66ms 26048KB
54 AC 100% 160ms 48976KB
55 WA 0% 42ms 22368KB
56 WA 0% 96ms 37808KB
57 WA 0% 68ms 28272KB
58 WA 0% 85ms 31040KB
59 WA 0% 51ms 21376KB
60 WA 0% 51ms 25984KB
61 WA 0% 74ms 30464KB
62 WA 0% 199ms 50528KB
63 WA 0% 144ms 42256KB
64 WA 0% 196ms 49760KB
65 WA 0% 158ms 47904KB
66 AC 100% 5ms 15808KB
67 WA 0% 113ms 31920KB
68 WA 0% 102ms 35488KB
69 WA 0% 272ms 65088KB
70 WA 0% 125ms 44160KB

ソースコード

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

typedef pair<int,int> P;

int N, M, K, used[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;
    
    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 || used[nnode] == 1 ) continue;

      Q.push(P( ncost, nnode ));
      used[nnode] = 1;
      
    }
    
  }

  int ans = 0;

  for(int i=0;i<N;i++) ans += used[i];
  
  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 ));
  }
  
  for(int i=0;i<K;i++){
    int h, d;
    cin>>h>>d;
    Q.push(P( d, h - 1 ));
    used[h-1] = 1;
  }
  
  solve();
  
  return 0;
}