记录编号 326335 评测结果 AWWWTTTETT
题目名称 零食店 最终得分 10
用户昵称 GravatarGROWL GOOD BOYส็ 是否通过 未通过
代码语言 C++ 运行时间 5.190 s
提交时间 2016-10-21 07:25:00 内存使用 0.45 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;

const int maxn=100+10;

int N,M,Q,S,C,D,Cnt,len;

int flag[maxn],Ans=0;

int head[maxn],data[maxn];

struct edge
{
       int dis,to,next;
}e[maxn*maxn];

void ADD(int x,int y,int dis)
{
     len++;
     e[len].to=y;
     e[len].next=head[x];
     e[len].dis=dis;
     head[x]=len;
}

void DFS(int x,int tot,int dis)
{
     //flag[x]=Cnt;
     //printf("++   %d\n",x);
     Ans=max(Ans,tot);
     if(data[x]>C&&!tot)
     {
     Ans=max(Ans,tot);
     return;
     }
     for(int t,i=head[x];i;i=e[i].next)
     {
      t=e[i].to;
      if(flag[t]!=Cnt&&e[i].dis+dis<=D)
      { 
         //printf("t  %d\n",t);
         flag[t]=Cnt;
         DFS(t,tot+1,dis+e[i].dis);
         flag[t]=Cnt-1;         
      }            
     }
}

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++)scanf("%d",&data[i]);
    for(int x,y,z,i=1;i<=M;i++)
    {
         scanf("%d%d%d",&x,&y,&z);
         ADD(x,y,z);
         ADD(y,x,z); 
    }    
    for(int i=1;i<=Q;i++)
    {
      scanf("%d%d%d",&S,&C,&D);
      Ans=1;
      ++Cnt;
      flag[S]=Cnt;
      DFS(S,1,0);
      printf("%d\n",Ans-1);
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}