Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38462 sea_water 【J】T3 C++ 通过 100 508 MS 46068 KB 1205 2025-10-08 15:32:37

Tests(10/10):


#include<bits/stdc++.h> using namespace std; int n,m,T,u,v; vector<int> p[100005],qq[105]; int qp[100001][101]; int pp[100005],mq,xs,qs,ans; struct xxs{ int x,len; }xx; queue<xxs> q; int main(){ // freopen("dinner.in","r",stdin); // freopen("dinner.out","w",stdout); scanf("%d%d%d",&n,&m,&T); for(int i=1;i<=n;i++){ scanf("%d",&pp[i]); qq[pp[i]].push_back(i); mq=max(mq,pp[i]); } for(int i=1;i<=mq;i++){ for(int j=1;j<=n;j++){ qp[j][i]=-1; } } for(int i=1;i<=m;i++){ scanf("%d%d",&u,&v); p[u].push_back(v); p[v].push_back(u); } for(int i=1;i<=mq;i++){ for(int j=0;j<qq[i].size();j++){ q.push({qq[i][j],0}); qp[qq[i][j]][i]=0; } while(q.size()){ xx=q.front(); q.pop(); for(int j=0;j<p[xx.x].size();j++){ if(qp[p[xx.x][j]][i]==-1){ qp[p[xx.x][j]][i]=xx.len+1; q.push({p[xx.x][j],xx.len+1}); } } } } while(T--){ ans=1000005; scanf("%d%d",&xs,&qs); if(qs>mq){ printf("-1\n"); continue; } for(int i=qs;i<=mq;i++){ if(qp[xs][i]!=-1){ ans=min(ans,qp[xs][i]); } } if(ans!=1000005){ printf("%d\n",ans); } else{ printf("-1\n"); } } }


测评信息: