比赛 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;
}