fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5. #include <math.h>
  6. #include <set>
  7. #include <algorithm>
  8. #include <deque>
  9. #include <list>
  10. #include <bits/stdc++.h>
  11. #include <queue>
  12. using namespace std;
  13. #define ll long long
  14.  
  15. void solve(){
  16. int m;
  17. cin>>m;
  18. vector<int>ans;
  19. vector<vector<int>>ref(m, vector<int>());
  20. for(int i=0; i<m; i++){
  21. int n;
  22. cin>>n;
  23. for(int j=0; j<n; j++){
  24. int x;
  25. ref[i].push_back(x);
  26. }
  27. }
  28. unordered_set<int>waste;
  29. for(int i = m-1; i>=0; i--){
  30. int flag = 0;
  31. for(auto a: ref[i]){
  32. if(!flag and waste.count(a)==0){
  33. flag = true;
  34. ans.push_back(a);
  35. }
  36. waste.insert(a);
  37. }
  38. }
  39. if(ans.size()==m){
  40. for(int i=m-1; i>=0; i--){
  41. if(i==0){
  42. cout<<ans[i]<<endl;
  43. }
  44. else{
  45. cout<<ans[i]<<" ";
  46. }
  47. }
  48. }
  49. else{
  50. cout<<-1<<endl;
  51. }
  52. }
  53.  
  54. int main(){
  55. int t;
  56. cin>>t;
  57. while(t--){
  58. solve();
  59. }
  60. }
Success #stdin #stdout 0.01s 5520KB
stdin
3
3
4
1 2 4 8
3
2 9 1
2
1 4
2
2
1 2
2
2 1
4
4
1 2 3 4
1
1
1
4
1
3
stdout
-1
-1
322621296