| 提出番号 | 1592 |
|---|---|
| 提出者 | Pulmn |
| 言語 | C++ |
| 提出日時 | 2018-08-04 13:13:45 |
| 問題名 | (73)観光計画 |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 105ms | 23872KB |
| 2 | AC | 100% | 142ms | 29440KB |
| 3 | AC | 100% | 67ms | 20144KB |
| 4 | AC | 100% | 181ms | 32352KB |
| 5 | AC | 100% | 100ms | 19216KB |
| 6 | AC | 100% | 162ms | 30080KB |
| 7 | AC | 100% | 177ms | 39104KB |
| 8 | AC | 100% | 210ms | 41920KB |
| 9 | AC | 100% | 127ms | 15920KB |
| 10 | AC | 100% | 223ms | 48192KB |
| 11 | AC | 100% | 104ms | 21824KB |
| 12 | AC | 100% | 31ms | 16352KB |
| 13 | AC | 100% | 87ms | 28592KB |
| 14 | AC | 100% | 210ms | 37728KB |
| 15 | AC | 100% | 153ms | 38368KB |
| 16 | AC | 100% | 128ms | 26288KB |
| 17 | AC | 100% | 190ms | 48736KB |
| 18 | AC | 100% | 143ms | 30160KB |
| 19 | AC | 100% | 36ms | 23424KB |
| 20 | AC | 100% | 113ms | 31904KB |
| 21 | AC | 100% | 55ms | 13440KB |
| 22 | AC | 100% | 89ms | 22752KB |
| 23 | AC | 100% | 82ms | 23488KB |
| 24 | AC | 100% | 261ms | 52256KB |
| 25 | AC | 100% | 263ms | 44592KB |
| 26 | AC | 100% | 209ms | 39504KB |
| 27 | AC | 100% | 48ms | 17168KB |
| 28 | AC | 100% | 51ms | 13504KB |
| 29 | AC | 100% | 135ms | 26272KB |
| 30 | AC | 100% | 94ms | 33696KB |
| 31 | AC | 100% | 260ms | 49424KB |
| 32 | AC | 100% | 137ms | 25520KB |
| 33 | AC | 100% | 30ms | 12720KB |
| 34 | AC | 100% | 192ms | 34832KB |
| 35 | AC | 100% | 26ms | 11696KB |
| 36 | AC | 100% | 176ms | 36224KB |
| 37 | AC | 100% | 90ms | 20736KB |
| 38 | AC | 100% | 17ms | 8672KB |
| 39 | AC | 100% | 241ms | 46688KB |
| 40 | AC | 100% | 27ms | 15376KB |
| 41 | AC | 100% | 209ms | 37824KB |
| 42 | AC | 100% | 59ms | 18000KB |
| 43 | AC | 100% | 241ms | 48320KB |
| 44 | AC | 100% | 135ms | 28160KB |
| 45 | AC | 100% | 148ms | 35488KB |
| 46 | AC | 100% | 154ms | 30416KB |
| 47 | AC | 100% | 217ms | 37232KB |
| 48 | AC | 100% | 219ms | 38720KB |
| 49 | AC | 100% | 122ms | 23488KB |
| 50 | AC | 100% | 189ms | 38912KB |
| 51 | AC | 100% | 48ms | 12720KB |
| 52 | AC | 100% | 121ms | 23008KB |
| 53 | AC | 100% | 60ms | 20080KB |
| 54 | AC | 100% | 186ms | 26768KB |
| 55 | AC | 100% | 43ms | 16976KB |
| 56 | AC | 100% | 128ms | 32032KB |
| 57 | AC | 100% | 72ms | 31264KB |
| 58 | AC | 100% | 80ms | 25520KB |
| 59 | AC | 100% | 54ms | 26512KB |
| 60 | AC | 100% | 60ms | 18096KB |
| 61 | AC | 100% | 89ms | 22768KB |
| 62 | AC | 100% | 191ms | 33040KB |
| 63 | AC | 100% | 153ms | 40048KB |
| 64 | AC | 100% | 197ms | 38400KB |
| 65 | AC | 100% | 175ms | 34688KB |
| 66 | AC | 100% | 4ms | 9584KB |
| 67 | AC | 100% | 97ms | 34720KB |
| 68 | AC | 100% | 115ms | 33136KB |
| 69 | AC | 100% | 274ms | 56896KB |
| 70 | AC | 100% | 143ms | 28192KB |
#include <bits/stdc++.h>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<long double> vd;
typedef vector<vd> vvd;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<string> vs;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef vector<pll> vpll;
typedef pair<int,P> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const ll INF=1ll<<60;
const double pi=acos(-1);
const double eps=1e-6;
const ll mod=1e9+7;
const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
class Graph{
private:
int n;
vvp g;
public:
vl DIJ(int s){
priority_queue<pll> q;
vl d(n,INF);
d[s]=0;
q.push({0,s});
while(!q.empty()){
pll p=q.top();
q.pop();
ll v=p.second;
if(d[v]<-p.first) continue;
for(auto i:g[v]){
ll u=i.first,D=d[v]+i.second;
if(d[u]>D){
d[u]=D;
q.push({-D,u});
}
}
}
return d;
}
Graph(int v){
n=v;
g=vvp(v);
}
void add_edge(int s,int t,int c){
g[s].push_back({t,c});
g[t].push_back({s,c});
}
};
int n,m,k;
vi a,b;
int main(){
cin>>n>>m>>k;
Graph g(n+1);
a=b=vi(k);
for(int i=0;i<m;i++){
int u,v,c;
cin>>u>>v>>c;
g.add_edge(u,v,c);
}
int M=0;
for(int i=0;i<k;i++){
cin>>a[i]>>b[i];
M=max(M,b[i]);
}
for(int i=0;i<k;i++) g.add_edge(0,a[i],M-b[i]);
vl d=g.DIJ(0);
int res=0;
for(int i=1;i<=n;i++) if(d[i]<=M) res++;
cout<<res<<endl;
}