96
int MaxMinEdge(Graph *G, char *mess, List *arc_edges, List *verts){
SEdge E; /* Aresta simples */
Node N;
int i,maxdeg,mindeg;

    /* Testa se o grafo esta vazio */
    if (G->size < 1) {
        sprintf(mess, "%s", "Empty graph!");
        return 1;
    }

    /* Procurar pelo vertice de maior grau */
    maxdeg = 0;
    for (i = 1; i < G->size; i++) {
        if (G->vertex[i].degree > G->vertex[maxdeg].degree) {
            maxdeg = i;
        }
    }

    /* Procura pelo vertice de menor grau adjacente ao de maior */
    mindeg = -1;
    for (i = 0; i < G->size; i++) {
        if (G->edge[maxdeg][i]) {
            if (mindeg == -1) {
                mindeg = i;
            } else if (G->vertex[i].degree < G->vertex[mindeg].degree) {
                mindeg = i;
            }
        }
    }

    /* Atribui maxdeg e o mindeg a aresta simples */
    E.u = maxdeg;
    E.v = mindeg;

    /* Coloca em um novo nodo a aresta simples  */
    N = MakeNode(&E, sizeof(SEdge));

    /* Coloca o nodo na lista de arestas especiais */
    InsertNode(arc_edges, N);

    return 1;
}
