RT,看了官方题解发现思路差不多
#include<bits/stdc++.h>
#define int long long
using namespace std;
int read(){
int f=1,sum=0;
char c=getchar();
while(!isdigit(c)){
if(c=='-'){
f=-1;
}
c=getchar();
}
while(isdigit(c)){
sum=(sum*10)+(c^48);
c=getchar();
}
return sum*f;
}
void write(int a){
if(a<0){
putchar('-');
a=-a;
}
if(a>9){
write(a/10);
}
putchar(a%10+'0');
}
int book[100100],ans[100100];
signed main(){
int t,s=0;
cin>>t;
while(t--){
int m,n,cnt=0,gs=0,flag=0;
cin>>m;
memset(book,0,sizeof(book));
for(int i=1;i<=m;i++){
cnt++;
cin>>n;
int a;
for(int j=1;j<=n;j++){
cin>>a;
gs=max(a,gs);
book[a]=cnt;
}
}
cnt=0;
for(int i=1;i<=m;i++){
for(int j=1;j<=gs;j++){
if(book[j]==i){
// cout<<j<<" "<<book[j]<<endl;
ans[++cnt]=j;
flag=1;
break;
}
}
if(!flag){
cout<<-1<<endl;
break;
}
}
if(!flag){
continue;
}
for(int i=1;i<=cnt;i++){
cout<<ans[i]<<" ";
}
cout<<endl;
}
return 0;
}
/*
1.是否需要开long long!开long long空间是否足够!!!
2.禁止摆烂!禁止摆烂!禁止摆烂!!!
3.该打的暴力一定要打!!!不能打暴力也要打随机!!!
警钟撅烂!!!
*/