Language: C++

#include <vector>
#include <iostream>

using namespace std;

class Dice
{
public:
	const static int NUM_S = 6;

	int a[NUM_S];

	Dice(void) {}

	void set(int _a[]) {
		a[0] = _a[0];
		a[1] = _a[1];
		a[2] = _a[2];
		a[3] = _a[3];
		a[4] = _a[4];
		a[5] = _a[5];
	}

	bool isEqual(Dice& o) {
		return a[0] == o[0] && a[1] == o[1] &&
			a[2] == o[2] && a[3] == o[3] &&
			a[4] == o[4] && a[5] == o[5];
	}

	bool operator == (Dice& st) {
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rw();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rw();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.re();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.re();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rw();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		if (dc.isEqual(st)) return true;
		dc.rs();
		return dc.isEqual(st);
	}

	int rs(void) {
		int tmp = a[1];
		a[1] = a[0]; a[0] = a[4];
		a[4] = a[5]; a[5] = tmp;
		return a[0];
	}

	int re(void) {
		int tmp = a[0];
		a[0] = a[3]; a[3] = a[5];
		a[5] = a[2]; a[2] = tmp;
		return a[0];
	}

	int rn(void) {
		int tmp = a[1];
		a[1] = a[5]; a[5] = a[4];
		a[4] = a[0]; a[0] = tmp;
		return a[0];
	}

	int rw(void) {
		int tmp = a[0];
		a[0] = a[2]; a[2] = a[5];
		a[5] = a[3]; a[3] = tmp;
		return a[0];
	}

};

int main()
{
	unsigned int n;
	vector<Dice> dc;
	cin >> n;
	dc.resize(n);
	for (unsigned int i = 0; i < n; ++i) {
		cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
	}

	for (unsigned int i = 0; i < n; ++i) {
		for (unsigned int j = 0; j < n; ++j) {
			if (dc[i] == dc[j]) {
				cout << "No" << endl;
				return 0;
			}
		}
	}
	cout << "Yes" << endl;

	return 0;
}



Compiler output:
a.cc: In member function 'bool Dice::isEqual(Dice&)':
a.cc:25:33: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   25 |                 return a[0] == o[0] && a[1] == o[1] &&
      |                                 ^
a.cc:25:49: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   25 |                 return a[0] == o[0] && a[1] == o[1] &&
      |                                                 ^
a.cc:26:34: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   26 |                         a[2] == o[2] && a[3] == o[3] &&
      |                                  ^
a.cc:26:50: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   26 |                         a[2] == o[2] && a[3] == o[3] &&
      |                                                  ^
a.cc:27:34: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   27 |                         a[4] == o[4] && a[5] == o[5];
      |                                  ^
a.cc:27:50: error: no match for 'operator[]' (operand types are 'Dice' and 'int')
   27 |                         a[4] == o[4] && a[5] == o[5];
      |                                                  ^
a.cc: In member function 'bool Dice::operator==(Dice&)':
a.cc:31:21: error: 'dc' was not declared in this scope
   31 |                 if (dc.isEqual(st)) return true;
      |                     ^~
a.cc:32:17: error: 'dc' was not declared in this scope
   32 |                 dc.rs();
      |                 ^~
a.cc: In function 'int main()':
a.cc:117:29: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                             ^
a.cc:117:41: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                                         ^
a.cc:117:53: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                                                     ^
a.cc:117:65: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                                                                 ^
a.cc:117:77: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                                                                             ^
a.cc:117:89: error: no match for 'operator[]' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<Dice>, Dice>::value_type' {aka 'Dice'} and 'int')
  117 |                 cin >> dc[i][0] >> dc[i][1] >> dc[i][2] >> dc[i][3] >> dc[i][4] >> dc[i][5];
      |                                                                                         ^