#include<bits/stdc++.h>
using namespace std;
int m,n,i,j,k,l,s,t,b[510],c[510],dis[510],a[510][510];
int main(){
scanf("%d%d\n",&m,&n);
for(i=1;i<=m;i++){
l=0;
do{
scanf("%d",&b[++l]);
}while(getchar()!='\n');
for(j=1;j<l;j++)
for(k=j+1;k<=l;k++)
a[b[j]][b[k]]=1;
}
memset(dis,0x3f,sizeof(dis));
dis[1]=0;
for(i=1;i<n;i++){
s=1e9;
for(j=1;j<=n;j++)
if(c[j]==0&&dis[j]<=s){
s=dis[j];
t=j;
}
c[t]=1;
for(j=1;j<=n;j++)
if(c[j]==0&&a[t][j])
dis[j]=min(dis[j],s+1);
}
if(dis[n]!=0x3f3f3f3f)printf("%d",dis[n]-1);
else printf("NO");
return 0;
}
一本通训练指导教程 P394 最优乘车 travel
最新推荐文章于 2023-02-01 19:45:12 发布