Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "todo.h"
- #define MAX 20
- /*
- int Lista_Insertar2(TLista *L, TElemento e,int tipo){
- if (!Lista_EstaEnLista(*L,e)){
- TNodo *nodo = malloc(sizeof(TNodo));
- nodo->elem=e;
- nodo->tipo=tipo;
- nodo->sig=NULL;
- if (Lista_EstaVacia(*L)){
- L->inicio = nodo;
- }
- else{
- L->fin->sig = nodo;
- }
- L->fin = nodo;
- (L->numElem)++;
- return 1;
- }
- TNodo *crtNodo= L->inicio;
- while(crtNodo!=NULL && crtNodo->elem != e)
- crtNodo=crtNodo->sig;
- return (crtNodo->tipo==tipo);
- }
- */
- int bipartito(TGrafo *g);
- void EncolarLista(TLista *visit,TCola *C,TLista *L, int tipo);
- int tipo=0;
- int correcto=1;
- int main(){
- TGrafo G;
- grafo_init(&G);
- grafo_insertV(&G,1);
- grafo_insertV(&G,2);
- grafo_insertV(&G,3);
- grafo_insertV(&G,4);
- grafo_insertA(&G,1,2);
- grafo_insertA(&G,1,3);
- //grafo_insertA(&G,2,3);
- grafo_insertA(&G,2,4);
- grafo_insertA(&G,3,4);
- if (bipartito(&G))
- printf("Es bipartito\n");
- else
- printf("No es bipartito\n");
- }
- int bipartito(TGrafo *g){
- //Colas
- TCola porvisitar;
- TLista visitados;
- C_init(&porvisitar);
- Lista_Crear(&visitados);
- TVertice *rec=g->ini;
- TNodo *crt=visitados.inicio;
- TElemento crtVert;
- //Buscamos el vértice
- C_enqueue(&porvisitar,g->ini->info);
- int tipo=0;
- Lista_Insertar2(&visitados,g->ini->info,tipo);
- while(!C_isEmpty(&porvisitar)){
- crtVert=C_dequeue(&porvisitar);
- rec=g->ini;
- while (rec && rec->info!=crtVert)
- rec=rec->sig;
- crt=visitados.inicio;
- while (crt && crt->elem!=crtVert)
- crt=crt->sig;
- EncolarLista(&visitados,&porvisitar,&rec->lstAdyacentes,crt->tipo);
- if (!correcto)
- return 0;
- }
- return 1;
- }
- void EncolarLista(TLista *visit,TCola *C,TLista *L, int tipo){
- TNodo *crtnode=L->inicio;
- while (crtnode){
- if (!Lista_EstaEnLista(*visit,crtnode->elem))
- C_enqueue(C,crtnode->elem);
- correcto=Lista_Insertar2(visit,crtnode->elem,!tipo);
- if (!correcto)
- break;
- crtnode=crtnode->sig;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment