#include #include #include #include #include #include using namespace std; const int MAX_N = 5005; int N, K; int special[MAX_N]; vector G[MAX_N]; bitsetv; void DFS(int start) { v[start]=1; 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; G[node].push_back(value); } } int maxx = -1; int nod; for(int i=1 ; i<=K ; i++) { v.reset(); int root = special[i]; DFS(root); int x = v.count(); if ( x > maxx ) maxx = x, nod = root; } cout << nod; return 0; }