比赛 |
NOIP模拟赛by mzx Day1 |
评测结果 |
AWWAWWWTTT |
题目名称 |
零食店 |
最终得分 |
20 |
用户昵称 |
Earl_WR |
运行时间 |
3.189 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2016-10-19 20:42:37 |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int map[110][110];
int n,m,q,s,c,d;
int cost[110];
int t=0,maxx=-1;
bool flag[110];
int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9'){if (ch=='-')f=-1;ch=getchar();}
while (ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
void in()
{
freopen ("snackstore.in","r",stdin);
freopen ("snackstore.out","w",stdout);
ios::sync_with_stdio(false);
memset(map,10,sizeof(map));
memset(cost,10,sizeof(cost));
for (int i=1;i<=n;i++)
{
map[i][i]=0;
}
n=read();m=read();q=read();
for (int i=1;i<=n;i++)
{
cost[i]=read();
}
for (int i=1;i<=m;i++)
{
int x,y,dis;
x=read();y=read();dis=read();
if (map[x][y]>dis)
{
map[y][x]=dis;
map[x][y]=dis;
}
}
}
void dfs(int k,int co,int di)
{
for (int i=1;i<=n;i++)
{
if (map[k][i]>di)
{
continue;
}
if (map[k][i]<=di && cost[i]>co && !flag[i])
{
flag[i]=true;
t++;
if (t>maxx)
maxx=t;
continue;
}
if (map[k][i]<=di && cost[i]<=co && !flag[i])
{
flag[i]=true;
t++;
di-=map[k][i];
if (t>maxx)
maxx=t;
dfs(i,co,di);
}
}
}
int main()
{
in();
for (int i=1;i<=q;i++)
{
maxx=-1;
memset(flag,0,sizeof(flag));
t=0;
s=read();c=read();d=read();
dfs(s,c,d);
if (maxx==n)
maxx--;
cout<<maxx<<endl;
}
return 0;
}