比赛 NOIP模拟赛by mzx Day1 评测结果 EEEEEEEEEE
题目名称 零食店 最终得分 0
用户昵称 lsj 运行时间 1.254 s
代码语言 C++ 内存使用 3.82 MiB
提交时间 2016-10-19 21:33:08
显示代码纯文本
#include<iostream>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int g;
int m,n,q;
int num;
int flag[10000]={};
int flagx[10000]={};
struct w
{
	int lu,qi;
}w[5000];
int f[1000][1000];
void dfs(int s,int d,int c)
{
	flag[s]=1;
	for(int i=1;i<=n;i++)
	{
		if(f[s][i]!=0&&flag[i]==0)
		{
			d=d-f[s][i];
			if(d<0){d=d+f[s][i];continue;}
			flag[i]==1;
			if(flagx[i]==0){num++;flagx[i]=1;}
			if(w[i].qi>c){d=d+f[s][i];continue;}
			dfs(i,d,c);
			flag[i]=0;
			d=d+f[s][i];
		}
	}
	flag[s]=0;
	return ;
}
int main()
{
	freopen("snackstore.in","r",stdin);
	freopen("snackstore.out","w",stdout);
	cin>>m>>n>>q;
	for(int i=1;i<=n;i++)
		cin>>w[i].qi;
	for(int i=1;i<=m;i++)
	{
		int x,y,l;
		cin>>x>>y>>l;
		f[y][x]=f[x][y]=l;
	}
	for(int i=1;i<=q;i++)
	{
		int  a,c,d;
		num=0;
		memset(flag,0,sizeof(flag));
		memset(flagx,0,sizeof(flagx));
		cin>>a>>c>>d;
		dfs(a,d,c);
		cout<<num<<endl;
	}
	return 0;
}