| 提出番号 | 1967 |
|---|---|
| 提出者 | T.M |
| 言語 | C++ |
| 提出日時 | 2018-08-04 14:45:59 |
| 問題名 | (73)観光計画 |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 57ms | 28592KB |
| 2 | AC | 100% | 68ms | 33440KB |
| 3 | AC | 100% | 33ms | 20272KB |
| 4 | AC | 100% | 77ms | 40400KB |
| 5 | AC | 100% | 31ms | 23376KB |
| 6 | AC | 100% | 65ms | 35168KB |
| 7 | AC | 100% | 107ms | 46064KB |
| 8 | AC | 100% | 105ms | 47936KB |
| 9 | AC | 100% | 33ms | 21248KB |
| 10 | AC | 100% | 120ms | 55728KB |
| 11 | AC | 100% | 47ms | 24912KB |
| 12 | AC | 100% | 13ms | 14240KB |
| 13 | AC | 100% | 47ms | 28512KB |
| 14 | AC | 100% | 100ms | 46496KB |
| 15 | AC | 100% | 75ms | 44912KB |
| 16 | AC | 100% | 59ms | 33312KB |
| 17 | AC | 100% | 98ms | 54416KB |
| 18 | AC | 100% | 69ms | 35696KB |
| 19 | AC | 100% | 23ms | 19616KB |
| 20 | AC | 100% | 56ms | 31824KB |
| 21 | AC | 100% | 19ms | 14176KB |
| 22 | AC | 100% | 45ms | 24432KB |
| 23 | AC | 100% | 48ms | 25280KB |
| 24 | AC | 100% | 154ms | 59648KB |
| 25 | AC | 100% | 104ms | 49920KB |
| 26 | AC | 100% | 107ms | 49712KB |
| 27 | AC | 100% | 26ms | 17200KB |
| 28 | AC | 100% | 22ms | 14048KB |
| 29 | AC | 100% | 60ms | 30720KB |
| 30 | AC | 100% | 59ms | 34496KB |
| 31 | AC | 100% | 129ms | 58224KB |
| 32 | AC | 100% | 45ms | 31328KB |
| 33 | AC | 100% | 13ms | 11792KB |
| 34 | AC | 100% | 85ms | 43168KB |
| 35 | AC | 100% | 14ms | 10656KB |
| 36 | AC | 100% | 88ms | 40304KB |
| 37 | AC | 100% | 40ms | 23056KB |
| 38 | AC | 100% | 9ms | 8416KB |
| 39 | AC | 100% | 132ms | 56160KB |
| 40 | AC | 100% | 13ms | 12736KB |
| 41 | AC | 100% | 109ms | 48320KB |
| 42 | AC | 100% | 30ms | 18288KB |
| 43 | AC | 100% | 103ms | 57712KB |
| 44 | AC | 100% | 60ms | 31456KB |
| 45 | AC | 100% | 91ms | 41648KB |
| 46 | AC | 100% | 69ms | 36432KB |
| 47 | AC | 100% | 106ms | 46688KB |
| 48 | AC | 100% | 107ms | 50208KB |
| 49 | AC | 100% | 41ms | 28192KB |
| 50 | AC | 100% | 97ms | 45360KB |
| 51 | AC | 100% | 20ms | 13120KB |
| 52 | AC | 100% | 52ms | 26896KB |
| 53 | AC | 100% | 35ms | 21632KB |
| 54 | AC | 100% | 50ms | 34880KB |
| 55 | AC | 100% | 22ms | 15664KB |
| 56 | AC | 100% | 70ms | 34160KB |
| 57 | AC | 100% | 33ms | 28480KB |
| 58 | AC | 100% | 41ms | 26912KB |
| 59 | AC | 100% | 35ms | 24960KB |
| 60 | AC | 100% | 30ms | 18304KB |
| 61 | AC | 100% | 43ms | 25072KB |
| 62 | AC | 100% | 77ms | 42080KB |
| 63 | AC | 100% | 91ms | 43120KB |
| 64 | AC | 100% | 102ms | 48768KB |
| 65 | AC | 100% | 73ms | 42368KB |
| 66 | AC | 100% | 3ms | 7632KB |
| 67 | AC | 100% | 71ms | 38592KB |
| 68 | AC | 100% | 68ms | 34496KB |
| 69 | AC | 100% | 136ms | 68512KB |
| 70 | AC | 100% | 52ms | 32448KB |
#include<stdio.h>
long long R=1,C=1,H[2000010],N[2000010];
long long MAX(long long a,long long b){return a<b?b:a;}
//評価関数(いまはMIN)
int hyouka(int a,int b){
if(C<b)return 1;
if(C<a||b==0)return 0;
return N[H[a]]<N[H[b]]?1:0;
}
//挿入関数
void hin(long long a){
int i=C++;
for(N[H[0]=R]=a;hyouka(0,i/2);i/=2)H[i]=H[i/2];
H[i]=R++;
}
//取り出す関数
int hout(){
int rt=H[1],i,j=2,k=H[--C];
for(i=1;hyouka(i,C);i=j)H[i]=H[j=i*2+1-hyouka(i*2,i*2+1)];
H[j/2]=k;
return rt;
}
long long CO[100010];
long long i,id[600010],ta[600010],nt[600010],f[600010]={0};
void dijk(int v,int e,int *fr,int *to,int *co,int mi){
for(i=0;i<v;i++)ta[i]=-1;
for(i=0;i<v;i++)CO[i]=1e17;
for(i=CO[mi]=0;i<e;i++){
nt[i]=ta[fr[i]];
ta[fr[i]]=i;
}
while(f[mi]-1){
f[mi]=1;
for(i=ta[mi];i+1;i=nt[i]){
if(CO[to[i]]>CO[mi]+co[i])hin(CO[id[R]=to[i]]=CO[mi]+co[i]);
}
while(f[mi]&&C-1)mi=id[hout()];
}
}
int main(){
int n,m,k,i,a[600010],b[600010],c[600010],e[100010],f[100010],max=0;
scanf("%d %d %d",&n,&m,&k);
for(i=0;i<m;i++)scanf("%d %d %d",&a[i],&b[i],&c[i]);
for(i=0;i<k;i++){
scanf("%d %d",&e[i],&f[i]);
max=MAX(max,f[i]);
}
for(i=0;i<k;i++){
a[i+m]=0;
b[i+m]=e[i];
c[i+m]=max-f[i];
}
for(i=0;i<m+k;i++){
a[i+m+k]=b[i];
b[i+m+k]=a[i];
c[i+m+k]=c[i];
}
dijk(n+1,m+k+m+k,a,b,c,0);
for(i=k=0;i<n;i++){
if(CO[i+1]<=max)k++;
}
printf("%d\n",k);
return 0;
}