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.a[0] && a[1] == o.a[1] &&
			a[2] == o.a[2] && a[3] == o.a[3] &&
			a[4] == o.a[4] && a[5] == o.a[5];
	}

	bool operator == (Dice& st) {
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rw();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rw();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		re();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		re();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rw();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		if (isEqual(st)) return true;
		rs();
		return 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 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];
      |                                                                                         ^