| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38435 | 郭澍宇 | 【J】T3 | C++ | 通过 | 100 | 337 MS | 48132 KB | 1141 | 2025-10-08 14:08:57 |
#include<bits/stdc++.h> using namespace std; int n,m,t; int p[100005]; int ans[100005][105]; vector<int > g[100005]; struct dot{ int e,w; }; queue<dot>q; void bfs(int k){ for(int i = 1;i<=n;i++){ if(p[i]<k)continue; q.push({i,0}); } while(!q.empty()){ int e=q.front().e,w=q.front().w; q.pop(); if(ans[e][k]<1e9)continue; ans[e][k]=w; for(auto v:g[e]){ if(ans[v][k]<1e9) continue; q.push({v,w+1}); } } } 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",&p[i]); while(m--){ int u,v; scanf("%d%d",&u,&v); g[u].push_back(v); g[v].push_back(u); } memset(ans,0x3f,sizeof ans); for(int i = 100;i>=0;i--){ bfs(i); } while(t--){ int x,q; scanf("%d%d",&x,&q); if(ans[x][q]>1e9){ printf("-1\n"); continue; } printf("%d\n",ans[x][q]); } } //O(np) 100pts