#include #include #include #include #include #include #include #include using namespace std; map mp; map sp; int head[2500]; int n,m,pos,cn; struct edge { int v,next; }eg[2500*2500]; struct visit { int v,cnt; }vd[2500]; bool cmp(visit a,visit b) { if(a.cnt==b.cnt)return sp[a.v]b.cnt; } void find(int s) { int vs[2500];int num=0; memset(vs,-1,sizeof(vs)); bool vid[2500]={0}; for(int i=0;i<2500;i++)vd[i].cnt=0; for(int i=head[s];i!=-1;i=eg[i].next) vid[eg[i].v]=1; for(int i=head[s];i!=-1;i=eg[i].next) { for(int j=head[eg[i].v];j!=-1;j=eg[j].next) { if(eg[j].v==s||vid[eg[j].v]==1)continue; if(vs[eg[j].v]==-1) { vd[num].v=eg[j].v; vd[num].cnt++; vs[eg[j].v]=num++; } else vd[vs[eg[j].v]].cnt++; } } sort(vd,vd+num,cmp); if(vd[0].cnt==0)printf("-"); else { cout<