30pts 求助
查看原帖
30pts 求助
702276
CSP_AK_kwd楼主2022/7/29 17:07

Code:

#include<bits/stdc++.h>
using namespace std;
string s;
int a[10001],dis[501][501],sum,cnt;
int main() {
	int m,n;
	cin>>m>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			dis[i][j]=0x3f;
		dis[i][i]=0;
	}
	getchar();
	for(int i=1; i<=m; i++) {
		sum=cnt=0;
		getline(cin,s);
		int len=s.length();
		for(int j=0; j<len; j++) {
			if(s[j]>='0'&&s[j]<='9')
				sum=sum*10+s[j]-'0';
			else {
				a[++cnt]=sum;
				sum=0;
			}
		}
		a[++cnt]=sum;
		for(int j=1; j<=cnt; j++)
			for(int k=j+1; k<=cnt; k++){
				int u=a[j],v=a[k];
				dis[u][v]=1;
			}
	}
	for(int k=1; k<=n; k++)
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
	if(dis[1][n]==0x3f)cout<<"NO"<<endl;
	else cout<<dis[1][n]-1<<endl;
	return 0;
}
2022/7/29 17:07
加载中...