1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <bits/stdc++.h> using namespace std; #define MS 100009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 0x3f3f3f3f
int n,m; int st,ed; int p[109][109];
int main() { ios::sync_with_stdio(false); cin >> n >> st >> ed; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { p[i][j] = MAXN; } } for(int i=1; i<=n; i++) p[i][i] = 0;
for(int i=1; i<=n; i++) { cin >> m; for(int j=1; j<=m; j++) { int x; cin >> x; if(j == 1) p[i][x] = 0; else p[i][x] = 1; } }
for(int k=1; k<=n; k++) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { p[i][j] = min(p[i][j],p[i][k]+p[k][j]); } } }
if(p[st][ed] == MAXN) cout << "-1\n"; else cout << p[st][ed] << "\n";
return 0; }
|