#include #include #define MAXN 5000 int influ[MAXN]; unsigned short a[MAXN][MAXN]={{0}}; unsigned short nr[MAXN]={0}, X[MAXN], n, k; int eliminate_space() { char ct; while ((ct=getc(stdin))==' '); if ((ct=='\n')||(ct==EOF)) return 1; else ungetc(ct, stdin); return 0; } void read_input() { unsigned short i, idx, t; int el; //end of line scanf("%hu%hu", &n, &k); for (i=0; i!=n; i++) influ[i]=-1; for (i=0; i!=k; i++) { scanf("%hu", &X[i]); X[i]--; //trecem in coordonate C } for (i=0; i!=n; i++) { scanf("%hu", &idx); idx--; el=0; while (!el) { if (eliminate_space()) el=1; //iseim din ciclu if (!el) { scanf("%hu", &t); t--; a[idx][nr[idx]]=t; nr[idx]++; } } } } void in_deepth(unsigned short idx) { unsigned short i; influ[idx]=0; for (i=0; i!=nr[idx]; i++) { if (influ[a[idx][i]]==-1) in_deepth(a[idx][i]); influ[idx]+=influ[a[idx][i]]+1; //putem influenta si pe el } } void max_influ() { unsigned short i, idx, maxinf=0, maxidx=0; for (i=0; i!=k; i++) { idx=X[i]; if (influ[idx]==-1) in_deepth(idx); if (influ[idx]>maxinf) { maxinf=influ[idx]; maxidx=idx; } } printf("%hu", maxidx+1); } int main() { FILE * fi, *fo, *sti=stdin, *sto=stdout; fi=fopen("input.txt", "rt"); fo=fopen("output.txt", "wt"); if ((fi!=NULL)&&(fo!=NULL)) { stdin=fi; stdout=fo; read_input(); max_influ(); stdout=sto; stdin=sti; } if (fi!=NULL) fclose(fi); if (fo!=NULL) fclose(fo); return 0; }