Advertisement
Guest User

Untitled

a guest
Apr 19th, 2021
1,199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. bool ManyEdges(int x,vector<int> s)
  4. {
  5.     printf("2 %d %d",x,s.size());
  6.     for (int i:s)
  7.     printf(" %d",i);
  8.     printf("\n");
  9.     fflush(stdout);
  10.     int ret;
  11.     scanf("%d",&ret);
  12.     if (ret==-1)
  13.     exit(0);
  14.     return ret;
  15. }
  16. bool OneEdge(int a,int b)
  17. {
  18.     printf("1 %d %d\n",a,b);
  19.     fflush(stdout);
  20.     int ret;
  21.     scanf("%d",&ret);
  22.     if (ret==-1)
  23.     exit(0);
  24.     return ret;
  25. }
  26. vector<int> getprefix(vector<int> v,int p)
  27. {
  28.     vector<int> ret;
  29.     for (int i=0;i<=p;i++)
  30.     ret.push_back(v[i]);
  31.     return ret;
  32. }
  33. vector<vector<int> > getMap(int n)
  34. {
  35.     vector<vector<int> > ret(n,vector<int>(n,1));
  36.     vector<int> path;
  37.     for (int i=0;i<n;i++)
  38.     path.push_back(i);
  39.     stable_sort(path.begin(),path.end(),OneEdge);
  40.     int p=n-2;
  41.     for (int i=n-1;i>=0;i--)
  42.     {
  43.         if (p==i)
  44.         {
  45.             for (int j=0;j<=i;j++)
  46.             {
  47.                 for (int k=i+1;k<n;k++)
  48.                 ret[path[k]][path[j]]=0;
  49.             }
  50.             p--;
  51.         }
  52.         while (ManyEdges(path[i],getprefix(path,p)))
  53.         p--;
  54.     }
  55.     return ret;
  56. }
  57. int main()
  58. {
  59.     int t;
  60.     scanf("%d",&t);
  61.     while (t--)
  62.     {
  63.         int n;
  64.         scanf("%d",&n);
  65.         auto res=getMap(n);
  66.         puts("3");
  67.         for (int i=0;i<n;i++)
  68.         {
  69.             for (int j=0;j<n;j++)
  70.             printf("%d",res[i][j]);
  71.             printf("\n");
  72.         }
  73.         fflush(stdout);
  74.         int ok;
  75.         scanf("%d",&ok);
  76.         if (ok==-1)
  77.         exit(0);
  78.     }
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement