Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41959 真很诡异你知道吗其实我不是皇子瑞 【S】T4 C++ 解答错误 20 2993 MS 16168 KB 1757 2026-06-06 14:37:09

Tests(3/15):


#include<bits/stdc++.h> using namespace std; long long n,m,a[10][100005],q,ji[10][100005]; int mp[2005][2005],vis[2005]; struct sss{ long long id,dis; }; queue<sss>qq; int main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ scanf("%lld",&a[i][j]); ji[i][a[i][j]]=j; } if(m!=1 && n<=2000){ for(int j=1;j<=n;j++){ for(int k=j+1;k<=n;k++){ mp[a[i][j]][a[i][k]]=1; } } } } scanf("%lld",&q); while(q--){ long long x,y; scanf("%lld%lld",&x,&y); if(m==1){ if(ji[1][y]>ji[1][x]){ printf("1\n"); } else printf("-1"); } else if(n<=2000){ memset(vis,0x3f,sizeof(vis)); while(!qq.empty())qq.pop(); qq.push((sss){x,0}); while(!qq.empty()){ sss now=qq.front(); qq.pop(); for(int i=1;i<=n;i++){ if(mp[now.id][i] && vis[i]>100000000){ vis[i]=now.dis+1; qq.push((sss){i,vis[i]}); } } } if(vis[y]<100000000)printf("%lld\n",vis[y]); else printf("-1\n"); } else{ long long flag=0; for(int i=1;i<=m;i++){ if(ji[i][x]<ji[i][y]){ printf("1\n"); flag=1; break; } } if(flag==0){ printf("2\n"); } } } } //40


测评信息: