fork(4) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. map<int,set<int> > lef;
  4. map<int,set<int> > rig;
  5.  
  6. int main()
  7. {
  8. int t;
  9. cin>>t;
  10. int i,j;
  11.  
  12.  
  13. int n,m,d,D;
  14.  
  15. while(t--)
  16. {
  17. lef.clear();
  18. rig.clear();
  19. cin>>n>>m>>d>>D;
  20. int flag=0;
  21.  
  22.  
  23. int k=0;
  24. int edgec=0;
  25.  
  26. while(1)
  27. {
  28. for(i=1;i<=n;i++)
  29. {
  30.  
  31. int tmp=i+k;
  32.  
  33. if(tmp>n)
  34. tmp-=n;
  35.  
  36. lef[i].insert(tmp);
  37. rig[tmp].insert(i);
  38. edgec++;
  39.  
  40. if(edgec==m)
  41. break;
  42.  
  43. }
  44. k++;
  45.  
  46. if(k==n)
  47. break;
  48.  
  49. if(edgec==m)
  50. break;
  51.  
  52.  
  53. }
  54.  
  55. for(i=1;i<=n;i++)
  56. {
  57. if(lef[i].size()<d || lef[i].size()>D || rig[i].size()<d || rig[i].size()>D)
  58. {
  59.  
  60. flag=1;
  61. break;
  62. }
  63. }
  64.  
  65. if(flag==1 || edgec!=m)
  66. {
  67. cout<<-1<<endl;
  68. continue;
  69. }
  70.  
  71.  
  72. for(i=1;i<=n;i++)
  73. {
  74. for(auto it=lef[i].begin();it!=lef[i].end();it++)
  75. {
  76. cout<<i<<" "<<*it<<endl;
  77. }
  78. }
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. }
  86.  
  87. }
Success #stdin #stdout 0s 3476KB
stdin
2
2 3 1 2
2 3 1 1    
stdout
1 1
1 2
2 2
-1