#include<bits/stdc++.h> using namespace std; vector<int> graf[509]; int n,m,y=0; void solve(int x, vector<int> g) { if(y==1) return; for(int i=0; i<g.size(); i++) { if(y==1) return; if(g[i]==graf[n+1][0]) { int a=0; while(a<graf[n+1].size()) { if(graf[n+1][a]!=g[i+a]) goto end; a++; } printf("%d", x); y=1; return; } end:; } vector<int> h; for(int i=0; i<g.size(); i++) { int v=g[i]; for(int j=0; j<graf[v].size(); j++) { int z=graf[v][j]; h.push_back(z); } } solve(x+1, h); return; } int main() { int a,b,c,d; scanf("%d%d", &n, &m); for(int i=1; i<=n ;i++) { scanf("%d", &a); for(int j=1; j<=a; j++) { scanf("%d", &b); graf[i].push_back(b); } } for(int i=1; i<=m; i++) { scanf("%d", &a); graf[n+1].push_back(a); } vector<int> g; g.push_back(1); solve(1,g); return 0; }
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include<bits/stdc++.h> using namespace std; vector<int> graf[509]; int n,m,y=0; void solve(int x, vector<int> g) { if(y==1) return; for(int i=0; i<g.size(); i++) { if(y==1) return; if(g[i]==graf[n+1][0]) { int a=0; while(a<graf[n+1].size()) { if(graf[n+1][a]!=g[i+a]) goto end; a++; } printf("%d", x); y=1; return; } end:; } vector<int> h; for(int i=0; i<g.size(); i++) { int v=g[i]; for(int j=0; j<graf[v].size(); j++) { int z=graf[v][j]; h.push_back(z); } } solve(x+1, h); return; } int main() { int a,b,c,d; scanf("%d%d", &n, &m); for(int i=1; i<=n ;i++) { scanf("%d", &a); for(int j=1; j<=a; j++) { scanf("%d", &b); graf[i].push_back(b); } } for(int i=1; i<=m; i++) { scanf("%d", &a); graf[n+1].push_back(a); } vector<int> g; g.push_back(1); solve(1,g); return 0; } |