mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
77 lines
1.6 KiB
C++
77 lines
1.6 KiB
C++
|
#include <iostream>
|
||
|
#include <cstring>
|
||
|
#include <string>
|
||
|
#include <cstdio>
|
||
|
#include <algorithm>
|
||
|
#include <vector>
|
||
|
#include <cmath>
|
||
|
using namespace std;
|
||
|
struct node
|
||
|
{
|
||
|
int t,p[15],c,id;
|
||
|
}cut[35];
|
||
|
bool cmp(node x,node y)
|
||
|
{
|
||
|
return x.t<y.t;
|
||
|
}
|
||
|
int T,longe,ans[35],tmpa[35],tmpl,n,w,m,vis[205],num;
|
||
|
void dfs(int pos,int lastt)
|
||
|
{
|
||
|
if(n-pos+tmpl<=longe) return;
|
||
|
int num,i,j,tmp;
|
||
|
for(i=pos+1;i<=n;i++)
|
||
|
{
|
||
|
for(j=1,num=0;j<=cut[i].c;j++)
|
||
|
{
|
||
|
tmp=cut[i].p[j];
|
||
|
if(vis[tmp]==0)
|
||
|
num++;
|
||
|
vis[tmp]++;
|
||
|
}
|
||
|
if((cut[i].t-lastt<=w||!tmpl)&&num>=3)
|
||
|
{
|
||
|
tmpl++;
|
||
|
tmpa[tmpl]=cut[i].id;
|
||
|
dfs(i,cut[i].t);
|
||
|
tmpl--;
|
||
|
}
|
||
|
for(j=1;j<=cut[i].c;j++)
|
||
|
{
|
||
|
tmp=cut[i].p[j];
|
||
|
vis[tmp]--;
|
||
|
}
|
||
|
}
|
||
|
if(longe<tmpl)
|
||
|
{
|
||
|
longe=tmpl;
|
||
|
for(j=0;j<longe;j++)
|
||
|
ans[j]=tmpa[j+1];
|
||
|
}
|
||
|
}
|
||
|
int main()
|
||
|
{
|
||
|
int i,j;
|
||
|
scanf("%d",&T);
|
||
|
while(T--)
|
||
|
{
|
||
|
scanf("%d%d%d",&n,&m,&w);
|
||
|
for(i=1;i<=n;i++)
|
||
|
{
|
||
|
scanf("%d%d",&cut[i].c,&cut[i].t);
|
||
|
for(j=1;j<=cut[i].c;j++)
|
||
|
scanf("%d",&cut[i].p[j]);
|
||
|
cut[i].id=i;
|
||
|
}
|
||
|
sort(cut+1,cut+n+1,cmp);
|
||
|
memset(vis,0,sizeof vis);
|
||
|
longe=0;tmpl=0;
|
||
|
dfs(0,cut[1].t);
|
||
|
sort(ans,ans+longe);
|
||
|
printf("%d\n",longe);
|
||
|
for(i=0;i<longe-1;i++)
|
||
|
printf("%d ",ans[i]);
|
||
|
printf("%d\n",ans[longe-1]);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|