0 1
2 1
0 2
entonces como son simetricas las coordenadas entonces hay dos circuitos 0120 y 0210 pero no se como hago o que funcion hacer para que halle la transitividad y vea si hay circuito hamiltoniano
por favor podrian ayudarme con eso
Código C++:
Ver original
#include <iostream> #include <string> using namespace std; class atraccion { private: int x; string name; public: atraccion () {} atraccion (int var, string nnombre){ x=var; name = nnombre; } ~atraccion() {} void set_x (int val) { //modifica el x x = val; } int get_x () { //devuelve el x return x; } void set_name ( string nom) { //modifica el nombre name =nom; } string get_name () { //devuelve el nombre return name; } }; int main (){ int posmayor,mayor; bool mat[10][10]; int x,y; string nombre; atraccion intercambio; cin>>m>>n>>h; atraccion ar [m]; //arreglo que almacena cada atraccion for (int i=0;i<m;i++) { cin>>nombre; ar[i].set_name(nombre); } for( int g=0;g<10;g++){ //matriz de adyacencia for (int f=0;f<10;f++){ mat[g][f] =false; } } for (int d=0;d<=h-1;d++){ //marca true for (int e=0;e<=h-1;d++){ cin>>x>>y; d=x; e=y; mat[d][e] =mat[e][d]= true; } } for (int w=0;w<=m-2;w++){ //ordenamiento //modelo 2 posmayor = w; mayor = ar[w].get_x(); for (int k=w+1; k<=m-1; k++){ if ((ar[k].get_x() == mayor) && (ar[k].get_name () < ar[w].get_name())){ mayor= ar[k]; posmayor=k; }else{ if (ar[k].get_x() > mayor) { mayor = ar[k].get_x(); posmayor =k; } } } intercambio = ar[posmayor]; //se encarga de cambiarlos ar[posmayor] =ar[w]; ar[w] = intercambio; } for (int j=0;j<n;j++) { cout<<ar[j].get_name()<<endl; } return 0; }