比赛 |
NOIP模拟赛by mzx Day1 |
评测结果 |
WWAWEEEEEE |
题目名称 |
零食店 |
最终得分 |
10 |
用户昵称 |
kito |
运行时间 |
0.817 s |
代码语言 |
C++ |
内存使用 |
0.48 MiB |
提交时间 |
2016-10-19 21:46:21 |
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
#define fcl fclose(stdin); fclose(stdout); return 0
#define SUBMIT
typedef long long LL;
int n,m,q;
LL w[110];
LL F[110][110],T[110][110];
/*
只能过样例。。
*/
inline LL GetMax(const LL& a,const LL& b){
if(a>b) return a;
return b;
}
inline LL GetMin(const LL& a,const LL& b){
if(a<b) return a;
return b;
}
int main(){
#ifdef SUBMIT
freopen("snackstore.in","r",stdin);
freopen("snackstore.out","w",stdout);
#endif
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;++i){
scanf("%lld",&w[i]);
}
int a,b; LL c,d;
memset(F,0x3f,sizeof(F));
for(int i=1;i<=m;++i){
scanf("%d%d%lld",&a,&b,&c);
F[a][b]=c; F[b][a]=c;
}
for(int k=1;k<=n;++k){
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(k!=i&&k!=j&&i!=j){
if(F[i][j]>F[i][k]+F[k][j]){
F[i][j]=GetMin(F[i][j],F[i][k]+F[k][j]);
T[i][j]=GetMax(w[k],GetMax(T[i][k],T[k][j]));
}
}
}
}
}
int ans;
for(int i=1;i<=q;++i){
scanf("%d%lld%lld",&a,&c,&d);
ans=1;
for(int j=1;j<=n;++j){
if(i!=j&&F[i][j]<=c&&T[i][j]<=b){
ans++;
}
}
printf("%d\n",ans);
}
#ifndef SUBMIT
getchar(); getchar();
#endif
fcl;
}