这个代码过掉了民间数据,但是官方数据被卡掉了
#include<bits/stdc++.h>
using namespace std;
#define N 1000005
struct node{
int id,sum;
}e[N];
int n,t;
int ans1,ans2,flag=0,ans3;
int use[N],pe[N<<1],s[N];
bool cmp(node a,node b){
return a.sum>b.sum;
}
int main(){
cin>>t;
while(t--){
flag=0;
int n;cin>>n;
memset(e,0,sizeof(e));
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
cin>>e[i].sum;
e[i].id=i;
s[i]=s[i-1]+e[i].sum;
use[i]=0;
for(int j=1;j<=e[i].sum;j++){
cin>>pe[s[i-1]+j];
}
}
sort(e+1,e+n+1,cmp);
//for(int i=1;i<=n;i++)cout<<e[i].id<<' '<<e[i].sum<<endl;
for(int k=1;k<=n;k++){
//cout<<e[k].id<<' '<<e[k].sum<<endl;
int i=e[k].id;
ans1=0,ans2=0;
for(int j=1;j<=e[k].sum;j++){
//cout<<i<<' '<<ans1<<' '<<ans2<<endl;
int p=pe[s[i-1]+j];
int v=use[p];
use[p]=i;
if(v==0)v=i;
if(ans1==0)ans1=v;
else if(ans1!=v)ans2=v;
if(ans1&&ans2){
e[k].sum=-114;
ans3=k;
flag=1;n=-1;
break;
}
}
}
if(flag==0)cout<<"NO"<<endl;
else{
cout<<"YES"<<endl;
//if(ans1==ans3||ans2==ans3);
//else if(e[ans1].sum>e[ans2].sum)ans1=ans3;
//else ans2=ans3;
cout<<ans1<<' '<<ans2<<endl;
}
}
return 0;
}