用n个优先队列。复杂度, 大概就这样吧。

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    int temp,temp2;
    cin>>n>>m;
     priority_queue<int>v[n];
    for(int i=0;i<n;i++){
        cin>>temp;
        for(int j=0;j<temp;j++){
            cin>>temp2;
            v[i].push(temp2);
        }
    }
    vector<int>vv;
    for(int i=0;i<m;i++){
        int max1=INT_MIN;
        int loc=-1;
        for(int j=0;j<n;j++){
            if(v[j].empty())continue;
            if(max1<v[j].top()){
                max1=v[j].top();
                loc=j;
            }
        }
        v[loc].pop();
        vv.push_back(max1);
    }
    for(int i=0;i<m;i++){
        cout<<vv[i]<<" ";
    }
    cout<<endl;
}