Advertisement
nicuvlad76

Untitled

Jan 29th, 2023
726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <bitset>
  4. #define N 105
  5. using namespace std;
  6. int n,m;
  7. int a[N][N], cod[N][N], st[N*N], dr[N*N];
  8. int dx[]={-1,1,0,0};
  9. int dy[]={0,0,-1,1};
  10. vector<int> g[N*N];
  11. bitset<N*N> viz;
  12. bool Inside(int i, int j)
  13. {
  14.     return i>=1 && i<=n && j>=1&& j<=m;
  15. }
  16.  
  17. bool Cupleaza(int k)
  18. {
  19.     if(viz[k]==1) return 0;
  20.     viz[k]=1;
  21.     for(int i:g[k])
  22.     {
  23.         if(dr[i]==0) { st[k]=i,dr[i]=k;return 1;}
  24.     }
  25.     for(int i:g[k])
  26.     {
  27.         if(Cupleaza(dr[i]))
  28.         {
  29.             st[k]=i, dr[i]=k;
  30.             return 1;
  31.         }
  32.     }
  33.     return 0;
  34. }
  35. int main()
  36. {
  37.   cin>>n>>m;
  38.   int i,j;
  39.   for(i=1;i<=n;i++)
  40.     for(j=1;j<=m;j++)
  41.       cin>>a[i][j];
  42.   int cnt=0;
  43.   for(i=1;i<=n;i++)
  44.     for(j=1;j<=m;j++)
  45.   {
  46.       cnt+=a[i][j];
  47.       cod[i][j]=cnt;
  48.   }
  49.   for(i=1;i<=n;i++)
  50.     for(j=1;j<=m;j++)
  51.   {
  52.       if(a[i][j]==0) continue;
  53.       for(int d=0;d<4;d++)
  54.       {
  55.           int l=i+dx[d], c=j+dy[d];
  56.           if(Inside(l,c)&& a[l][c]==1)
  57.           {
  58.               if((i+j)&1)g[cod[i][j]].push_back(cod[l][c]);
  59.           }
  60.       }
  61.   }
  62.  
  63.   bool gata=0;
  64.   int res=0;
  65.   while(!gata)
  66.   {
  67.       gata=1;
  68.       viz.reset();
  69.       for(i=1;i<=n;i++)
  70.         for(j=1;j<=m;j++)
  71.          if(a[i][j]==1 && st[cod[i][j]]==0 && Cupleaza(cod[i][j]))
  72.       {
  73.           res++;
  74.           gata=0;
  75.       }
  76.   }
  77.   cout<<res;
  78.   return 0;
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement