#include #include #include #include using namespace std; const int MAX_N = 5005; int N, K; int in[MAX_N]; int special[MAX_N]; vector G[MAX_N]; bool viz[MAX_N]; long long nrf[MAX_N]; int v[MAX_N]; void DFS(vector*g,int start ,int cul ,int *v) { v[start]=cul; for(vector::iterator i=g[start].begin();i> N >> K; for (int i = 1; i <= K; ++i) cin >> special[i]; for (int i = 1, node; i <= N; ++i) { cin >> node; for (int value = 0; cin.peek () != '\n' && !cin.eof(); ) { cin >> value, ++in[value]; G[node].push_back(value); } } // for (int i = 1; i <= N; ++i) // if (in[i] == 0) // G[0].push_back(i); // dfs(0,-1); int maxx = -1; int nod; for(int i=1 ; i<=K ; i++) { int cr = 0; int root = special[i]; memset(v,0,sizeof(v)); DFS(G,root,1,v); for(int i=1 ; i<=N ; i++) if( v[i] != 0 ) ++cr; if ( cr > maxx ) maxx = cr, nod = root; } cout << nod; return 0; }