Buongiorno, avrei bisogno d’aiuto nel preblema “projectgroup”;
questo è il mio codice:
#include
#include
#include
#define MAXN 1000using namespace std;
typedef struct
{
int x, y, z;
} group;bool canPutTogether(group *a, group *b)
{
if (a->x == b->x || a->x == b->y || a->x == b->z || a->y == b->x || a->y == b->y || a->y == b->z || a->z == b->x || a->z == b->y || a->z == b->z)
return false;
return true;
}int N, M;
bool vett[MAXN][MAXN];
vector gruppi;
vector<vector<group*>> container;int main()
{
ifstream in(“input.txt”);
ofstream out(“output.txt”);
int inA, inB;in >> N >> M; for (int i = 0; i < M; i++) { in >> inA >> inB; vett[inA][inB] = true; vett[inB][inA] = true; } for (int i = 0; i < N - 2; i++) { for (int j = i + 1; j < N - 1; j++) { if (vett[i][j] == true) { for (int k = j + 1; k < N; k++) { if (vett[j][k] == true) { if (vett[k][i] == true) { group gruppo = {i, j, k}; gruppi.push_back(gruppo); } } } } } } vector<group*> sub; bool messo; for (int i = 0; i < gruppi.size(); i++) { messo = false; sub.push_back(&gruppi[i]); for(int j = 0; j < container.size(); j++){ for(int k = 0; k < container[j].size() && !messo; k++){ if(!canPutTogether(container[j][k], sub[0])){ k = container[j].size(); }else if(k == container[j].size() - 1){ container.push_back(container[j]); container[k].push_back(sub[0]); messo = true; } } } container.push_back(sub); sub.clear(); } vector<group*> maxG; maxG = container[0]; for (int i = 1; i < (int)container.size(); i++) { if(maxG.size() < container[i].size()) maxG = container[i]; } out << maxG.size() << endl; for(int i = 0; i < maxG.size(); i++){ out << maxG[i]->x << " " << maxG[i]->y << " " << maxG[i]->z << endl; } return 0;
}
e non capisco, seppur riesco a risolvere tutti i subtasks 2 e 3, perché nei 4 e 5 mi dice “Wrong output (triangles printed are not disjoint)”, potete aiutarmi?