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