Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38496 hi_hi 【J】T3 C++ 通过 100 259 MS 48336 KB 1342 2025-10-09 13:14:51

Tests(10/10):


#include<bits/stdc++.h> using namespace std; long long n,m,_,p[100005],dis[100005]; vector<long long>poi[100005]; queue<long long>q; int ji[100005][105]; int main(){ scanf("%lld%lld%lld",&n,&m,&_); for(int i=1;i<=n;i++){ scanf("%lld",&p[i]); } for(int i=1;i<=m;i++){ long long a,b; scanf("%lld%lld",&a,&b); poi[a].push_back(b); poi[b].push_back(a); } memset(ji,0x3f,sizeof(ji)); for(int i=100;i>=1;i--){ for(int j=1;j<=n;j++){ dis[j]=0x3f3f3f3f3f3f3f3f; if(p[j]==i){ dis[j]=0; q.push(j); } } while(!q.empty()){ long long now=q.front(); q.pop(); ji[now][i]=dis[now]; for(int i=0;i<poi[now].size();i++){ if(dis[poi[now][i]]==0x3f3f3f3f3f3f3f3f){ dis[poi[now][i]]=dis[now]+1; q.push(poi[now][i]); } } } } for(int i=1;i<=n;i++){ for(int j=100;j>=1;j--){ ji[i][j]=min(ji[i][j],ji[i][j+1]); } } while(_--){ long long a,b; scanf("%lld%lld",&a,&b); if(ji[a][b]<0x3f3f3f)printf("%lld\n",ji[a][b]); else printf("-1\n"); } }


测评信息: