/*
  hadamard.c -- C-uitwerking van de NKP'97-opgave "Hadamard"
  (c) 01/09/'97 Meinte Boersma
*/

#include <stdio.h>

#define max 1000
#define TRUE 1


typedef int bucketsort[max+1];
typedef struct {
  bucketsort rijbucket, kolombucket;
} Hmatrix;

int I, n, run;

void leesHadamard (Hmatrix *H)
{
  int i, j, aantal, getal;
  typedef int tabel[max+1];
  tabel rijeen, kolomeen;

  /* buckets legen */
  for (i=0; i<=n; i++) {
    H->rijbucket[i] = 0;
    H->kolombucket[i] = 0;
  }
  /* 1_i (H^t) initialiseren */
  for (i=1; i<=n; i++) {
    kolomeen[i] = 0;
  }
  /* matrix lezen en 1_i (H(t)), rij-bucket bijhouden */
  for (i=1; i<=n; i++) {
    aantal = 0;
    for (j=1; j<=n; j++) {
      scanf("%d", &getal);
      if (getal==1) {
        aantal++;
        kolomeen[j]++;
      }
    }
    rijeen[j] = aantal;
    H->rijbucket[aantal]++;
  }
  /* kolom-bucket bepalen */
  for (j=1; j<=n; j++) {
    aantal = kolomeen[j];
    H->kolombucket[aantal]++;
  }
}

void instantie (void)
{
  int t, equivalent;
  Hmatrix H1, H2;

  scanf("%d", &n);
  leesHadamard(&H1);
  leesHadamard(&H2);
  /* buckets matchen */
  t = 0;
  equivalent = TRUE;
  while (equivalent && (t<=n)) {
    equivalent = ((H1.rijbucket[t]==H2.rijbucket[t]) &&
                  (H1.kolombucket[t]==H2.kolombucket[t]));
    t++;
  }
  /* buckets gelijk ==> H1 ~ H2 */
  if (equivalent) {
    printf("equivalent\n");
  } else {
    printf("niet equivalent\n");
  }
}

int main (void)
{
  scanf("%d", &I);
  for (run=0; run<I; run++) {
    instantie();
  };
  return(0);
}

Generated by Java2Html