提交时间:2022-10-12 17:15:46

运行 ID: 59463

#include<bits/stdc++.h> using namespace std; const int Mn=5005; vector<int> rd[Mn]; int n,m,q,x,opt,M,li,ri; int u,v,w,l[Mn],r[Mn]; int c[Mn],mp[Mn][Mn]; int cr[Mn],h[502]; void d(int k,int ll){ cr[k]=1; if(ll<=ri) for(int i=0;i<rd[k].size();i++){ if(cr[rd[k][i]]==0 && mp[k][rd[k][i]]<=li+ll) d(rd[k][i],ll+1); } } int fd(){ for(int i=1;i<=n;i++)if(cr[i]==1)h[c[i]]+=1; int cot=0; for(int i=1;i<=n;i++) cot+=1; return cot; } int main(){ freopen("b.in","r",stdin); freopen("b.out","w",stdout); scanf("%d%d%d%d%d",&n,&m,&q,&x,&opt);//第一行 if(opt==1) scanf("%d",&M);//第1.5行 for(int ct=1;ct<=n;ct++) scanf("%d",&c[ct]);//第二行 for(int ct=1;ct<=m;ct++) { scanf("%d%d%d",&u,&v,&w);//第三行,下来n个整数 rd[u].push_back(v); rd[v].push_back(u); mp[u][v]=w; mp[v][u]=w;//录图 } for(int ct=1;ct<=q;ct++) scanf("%d%d",&l[ct],&r[ct]);//下来q行 for(int ct=1;ct<=q;ct++) { li=l[ct];ri=r[ct]; memset(cr,0,sizeof(cr)); d(x,0); printf("%d\n",fd()); } return 0; }