比赛 NOIP模拟赛by mzx Day1 评测结果 AWWWWWWTTT
题目名称 零食店 最终得分 10
用户昵称 Shirry 运行时间 3.077 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2016-10-19 21:42:35
显示代码纯文本
#include<cstdio>
#include<queue>
#include<vector>
#include<string.h>
#include<iostream>
using namespace std;
int n,m,q,sum=0,ww=0,pp=0,visited[101]={0},W[101];
class T{
public:
	int v,path;
}temp;
vector<T>A[101];
int ahh(int in,int tt,int mm){
	sum=0;ww=0;pp=0;
	queue<int>B;
	memset(visited,0,sizeof(int));
	B.push(in);
	visited[in]=1;
	for(int i=0;i<A[in].size();i++){
		if(A[in][i].path<=mm){
			B.push(A[in][i].v);
			visited[A[in][i].v]=1;
			sum++;
		}
	}
	while(!B.empty()){
		int x;
		x=B.front();
		B.pop();
		ww=W[x];
		for(int i=0;i<A[x].size();i++){
			if(ww<=tt&&pp+A[x][i].path<=mm&&visited[A[x][i].v]==0){
				B.push(A[x][i].v);
				pp=pp+A[x][i].path;
				visited[A[x][i].v]=1;
				ww=W[A[x][i].v];
				sum++;
			}
		}
	}
}
int main(){
	freopen("snackstore.in","r",stdin);
	freopen("snackstore.out","w",stdout);
	scanf("%d%d%d",&n,&m,&q);
	for(int i=1;i<=n;i++){
		cin>>W[i];
	}
	int a,b,e;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&a,&b,&e);
		temp.v=b;
		temp.path=e;
		A[a].push_back(temp);
		temp.v=a;
		A[b].push_back(temp);
	}
	int s,c,d;
	for(int i=1;i<=q;i++){
		scanf("%d%d%d",&s,&c,&d);
		ahh(s,c,d);
		printf("%d\n",sum);
	}
	return 0;
}