Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38449 wxy 【J】T3 C++ 运行超时 70 1000 MS 55132 KB 1163 2025-10-08 15:06:05

Tests(7/10):


#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,t,p[N],dis[N][105]; bool vis[N]; vector<int> a[N]; void dfs(int fa,int u,int d,int pa){ if(dis[u][pa]>d){ dis[u][pa]=d; for(int i=0;i<=pa;i++){ dis[u][i]=min(dis[u][i],d); //cout<<u<<" "<<pa<<" "<<dis[u][i]<<endl; } //cout<<u<<" "<<pa<<" "<<dis[u][pa]<<endl; } for(int i=0;i<a[u].size();i++){ int v=a[u][i]; if(v==fa||vis[v]) continue; vis[v]=1; dfs(u,v,d+1,pa); vis[v]=0; } } int main(){ memset(dis,0x3f,sizeof(dis)); scanf("%d %d %d",&n,&m,&t); for(int i=1;i<=n;i++){ scanf("%d",&p[i]); } for(int i=1;i<=m;i++){ int u,v; scanf("%d %d",&u,&v); a[u].push_back(v); a[v].push_back(u); } for(int i=1;i<=n;i++){ dfs(i,i,0,p[i]); } for(int i=1;i<=t;i++){ int x,q; scanf("%d %d",&x,&q); if(dis[x][q]>m){ printf("%d\n",-1); }else{ printf("%d\n",dis[x][q]); } } return 0; }


测评信息: