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