#include<bits/stdc++.h>
using namespace std;
int n, m, dis[505][505], a[505];
int main() {
    cin >> m >> n ;
	string s;
	getline(cin, s);
	memset(dis, 0x3f, sizeof(dis));
	int INF = dis[1][1];
	for(int k = 1; k <= m; k++) {
		getline(cin, s);
		stringstream ss(s);
		int ls = 1;
		while(ss >> a[ls]) ls++;
        ls--;
		for(int i = 1; i <= ls; i++) {
			for(int j = i + 1; j <= ls; j++)
				dis[a[i]][a[j]] = 1;
		}
	}
	for(int i = 1; i <= n; i++) dis[i][i] = 0;
	for(int k = 1; k <= n; k++) {
		for(int i = 1; i <= n; i++) {
			for(int j = 1; j <= n; j++) {
				if(dis[i][j] > dis[i][k] + dis[k][j])
					dis[i][j] = dis[i][k] + dis[k][j];
			} 
		} 
	} 
	if(dis[1][n] == INF) cout << "NO" << endl;
	else cout << dis[1][n] - 1 << endl;
	return 0;
}


1 条评论

  • 1