Non mi intendo di grafi, tuttavia qualche idea, senza codice, te la posso dare.
Tu chiedi all'utente un numero pari di punti.
Li memorizzi in un vettore di strutture del tipo:
codice:
#define MAX 100
struct arco {
char P1, P2;
} grafo[MAX];
E poi esegui i controlli con diverse funzioni.
codice:
void trovaparalleli()
{
int i,j;
struct arco a;
bool skip[MAX]; // da inizializzare
// n = numero di archi
for(i=0; i<n; i++) {
if(skip[i]) continue;
a = grafo[i];
for(j=i + 1; j<n; j++) {
if(a == grafo[j]) {
cout << "L'arco " << i << " è in parallelo con " <<j << endl;
skip[j] = true;
}
}
}
}
Questo codice non è testato ed è parecchio da perfezionare, ma non ho tempoo!!!
Per quelli in serie il codice è simile.
codice:
void trovaparalleli()
{
int i,j;
struct arco a;
bool skip[MAX]; // da inizializzare
// n = numero di archi
for(i=0; i<n; i++) {
if(skip[i]) continue;
a = grafo[i];
for(j=i + 1; j<n; j++) {
if(a.P2 == grafo[j].P1) {
cout << "L'arco " << i << " è in serie con " <<j << endl;
skip[j] = true;
a = grafo[j];
}
}
}
}
Mi raccomando, tratta questo codice come un'idea, algoritmo, non alla lettera!
E poi devo ammettere di non aver capito molto della tua spiagazione!!
Vabbè spero che almeno alla lontana sia giusto, è buttato giù in 2 minuti!