int main(int argc, char const *argv[])
{

    insere_vertice(1);
    insere_vertice(10);
    insere_vertice(100);
    insere_vertice(1000);
    insere_vertice(10000);

    insere_aresta(1, 10);
    insere_aresta(1, 100);
    insere_aresta(1, 1000);
    insere_aresta(10, 100);
    insere_aresta(100, 1000);
    insere_aresta(1000, 100);
    insere_aresta(1000, 100);
    insere_aresta(10000, 100);
    insere_aresta(10000, 10);
    insere_aresta(10000, 1);

    imprime_grafo();

    remove_aresta(10000, 100);
    imprime_grafo();

    remove_aresta(1000, 100);
    imprime_grafo();

    remove_aresta(1, 10);
    imprime_grafo();

    return 0;
}
Exemplo n.º 2
0
int main(void) {
    grafo G;
    define(&G);

    insere_vertice(&G,'a');
    insere_vertice(&G, 'b');
    insere_vertice(&G, 'c');
    insere_vertice(&G, 'd');
    insere_vertice(&G, 'e');

    insere_aresta(&G,'b','a');
    insere_aresta(&G,'c','a');

    insere_aresta(&G,'a','b');
    insere_aresta(&G,'c','b');
    insere_aresta(&G,'d','b');

    insere_aresta(&G,'a','c');
    insere_aresta(&G,'b','c');
    insere_aresta(&G,'d','c');
    insere_aresta(&G,'e','c');

    insere_aresta(&G,'b','d');
    insere_aresta(&G,'c','d');
    insere_aresta(&G,'e','d');

    insere_aresta(&G,'c','e');
    insere_aresta(&G,'d','e');

    vizualiza(&G);

    remove_vertice(&G, 'd');


    printf("\n\n");
    vizualiza(&G);
    printf("\n");
    remove_aresta(&G,'c','e');
    vizualiza(&G);

    return 0;
}
main() {

  insere_vertice(1);
  insere_vertice(10);
  insere_vertice(100);
  insere_vertice(1000);
  insere_vertice(10000);
  insere_vertice(2);

  printf("\n\n");
  insere_aresta(1, 10);
  insere_aresta(1, 100);
  insere_aresta(1,1000);
  insere_aresta(1,10000);
  insere_aresta(10,10);
  insere_aresta(10,100);
  insere_aresta(10,1000);
  insere_aresta(100,10000);
  insere_aresta(10000,1);
  insere_aresta(1000,1);

  printf("\n\n");
  remove_aresta(1000,1);
  remove_aresta(1,10);
  remove_aresta(10,1000);
  remove_aresta(1,2);

  printf("\n\n");
  imprime();
  getch();
}
Exemplo n.º 4
0
/* Insere os vertices no grafo */
void ler_arquivo(char* endereco, Tipo_Grafo* grafo, int tamanho) {
	FILE *arquivo;
	char linha[50];
	char *partes;
	int vertice, aresta, distancia;

	arquivo = fopen(endereco, "r");
	fgets(linha, 100, arquivo);

	while (!feof(arquivo))
	{
		fgets(linha, 100, arquivo);
		partes = (char*)strtok(linha, " ");
		vertice = atoi(partes);
 		partes = (char*)strtok(NULL, " ");
 		aresta = atoi(partes);
 		partes = (char*)strtok(NULL, " ");
 		distancia = atoi(partes);
 		printf("%d %d %d\n", vertice, aresta, distancia);
 		insere_vertice(grafo, vertice, tamanho);
 		insere_aresta(grafo, vertice, aresta, distancia);
	}
	fclose(arquivo);
}
Exemplo n.º 5
0
int main(void){
	grafo G;
	define(&G);

	char entrada='N'; 
	int data, data2;
	while(entrada!='@'){
		//interface
		printf("inserir vertice: (V)\n");
		printf("inserir aresta: (A)\n");
		printf("visualizar grafo: (G)\n");
		printf("remover vertice: (R)\n");
		printf("remover aresta: (r)\n");
		printf("sair: (@)\n");
		scanf(" %c",&entrada);
		//logica do programa
		if(entrada=='V'){
			printf("ensira -1 para sair da entrada de vertices\n");
			printf("ensira vertice que deseja: \n");
			scanf("%d",&data);
			while(data!=-1){
				insere_vertice(&G,data);
				scanf("%d",&data);
			}
		}
		else if(entrada=='A'){
			printf("ensira -1 para sair da entrada de arestas\n");
			printf("ensira a aresta e o vertice que deseja ligar:\n");
			scanf("%d %d",&data,&data2);
			while(data!=-1){
				insere_aresta(&G,data,data2);
				insere_aresta(&G,data2,data);
				scanf("%d %d",&data,&data2);
			}
		}
		else if(entrada=='G'){
			vizualiza(&G);
		}
		else if(entrada=='R'){
			printf("ensira -1 para sair da remocao de vertice\n");
			printf("ensira o vertice que deseja remover\n");
			scanf("%d",&data);
			while(data!=-1){
				remove_vertice(&G,data);
				scanf("%d",&data);
			}
		}
		else if(entrada=='r'){
			printf("ensira -1 para sair da remocao de arestas\n");
			printf("ensira aresta e o vertice que deseja remover\n");
			scanf(" %d %d",&data,&data2);
			while(data!=-1){
				remove_aresta(&G,data,data2);
				remove_aresta(&G,data2,data);
				scanf(" %d %d",&data,&data2);
			}
		}
		printf("---------------------------------------------------------------------------\n");
		//scanf(" %c",&entrada);
	}



	return 0;
}
Exemplo n.º 6
0
int main(void){
	grafo G, lista;
	define(&G);
	define(&lista);

	char entrada='N'; 
	int data, data2;
	while(entrada!='@'){
		//interface
		printf("inserir vertice: (V)\n");
		printf("inserir aresta: (A)\n");
		printf("insere aresta ordenada: (o)\n");
		printf("visualizar grafo: (G)\n");
		printf("remover vertice: (R)\n");
		printf("remover aresta: (r)\n");
		printf("busca em largura: (l)\n");
		printf("busca em profundidade: (p)\n");
		printf("retorna Grau da porra tudo: (g)\n");
		printf("diz se grafo e conexo: (c)\n");
		printf("transforma em matriz de  adjacencia: (m)\n");
		printf("algoritmo de prim: (i)\n");
		printf("algoritmo djikistra: (d)\n");
		printf("ensira -1 para sair de qualquer opcao:\n");
		printf("sair: (@)\n");
		scanf(" %c",&entrada);
		//logica do programa
		if(entrada=='V'){
			printf("ensira vertice que deseja: \n");
			scanf("%d",&data);
			while(data!=-1){
				insere_vertice(&G,data);
				scanf("%d",&data);
			}
		}
		else if(entrada=='A'){
			printf("ensira a aresta, vertice e o custo que deseja ligar:\n");
			int custo;
			scanf("%d %d %d",&data,&data2,&custo);
			while(data!=-1){
				insere_aresta(&G,data,data2,custo);
				insere_aresta(&G,data2,data,custo);
				scanf("%d %d %d",&data,&data2,&custo);
			}
		}
		else if(entrada=='G'){
			vizualiza(&G);
		}
		else if(entrada=='R'){
			printf("ensira o vertice que deseja remover\n");
			scanf("%d",&data);
			while(data!=-1){
				remove_vertice(&G,data);
				scanf("%d",&data);
			}
		}
		else if(entrada=='O'){
			printf("ensira a aresta, vertice e o custo que deseja ligar-orientado:\n");
			int custo;
			scanf("%d %d %d",&data,&data2,&custo);
			while(data!=-1){
				insere_aresta(&G,data,data2,custo);
				scanf("%d %d %d",&data,&data2,&custo);
			}
		}
		else if(entrada=='r'){
			printf("ensira aresta e o vertice que deseja remover\n");
			scanf(" %d %d",&data,&data2);
			while(data!=-1){
				remove_aresta(&G,data,data2);
				remove_aresta(&G,data2,data);
				scanf(" %d %d",&data,&data2);
			}
		}
		else if(entrada=='l'){
			int distancia[buscamaior(&G)], pai[buscamaior(&G)];
			printf("ensira o vertice que deseja fazer busca\n");
			scanf(" %d",&data);
			while(data!=-1){
				if(pertence(&G,data)==1){
					buscalargura(&G,data,distancia,pai);
					no *q;
					q=G.inicio;
					while(q!=NULL){
						printf("%d dista %d do vertice %d\n",q->vertice,distancia[q->vertice],data);
						q=q->prox;
					}
				}
				scanf(" %d",&data);
			}
		}
		else if(entrada=='p'){
			int distancia[buscamaior(&G)], pai[buscamaior(&G)], f[buscamaior(&G)], data;
			no *q;
			while(data!=-1){
				q=G.inicio;
				buscaemprofundidade(&G,distancia,f,pai);
				while(q!=NULL){
					printf("%d dista %d com tempo %d\n",q->vertice,distancia[q->vertice],f[q->vertice] );
					q=q->prox;
				}
				scanf("%d",&data);
			}
			free(q);
		}
		else if(entrada=='g'){
			scanf("%d",&data);
			while(data!=-1){
				printf("o grau eh de %d\n",grauVertice(&G,data));
				scanf("%d",&data);
			}
		}
		else if(entrada=='c'){
			verificaConexo(&G);
		}
		else if(entrada=='m'){
			no *q;
			q=G.inicio;
			int maior=0, i, j;
			while(q!=NULL){
				if(q->vertice>maior){
					maior=q->vertice;
				}
				q=q->prox;
			}
			//gera a matriz
			int matriz[maior+1][maior+1];
			//inicializa a matriz
			for(i=0;i<maior+1;i++){
				for(j=0;j<maior+1;j++){
					matriz[i][j]=0;
				}
			}
			q=G.inicio;
			while(q!=NULL){
				matriz[q->vertice][0]=q->vertice;
				matriz[0][q->vertice]=q->vertice;
				q=q->prox;
			}
			// transforma o grafo em uma matriz
			aresta *p;
			i=0;
			j=0;
			q=G.inicio;
			while(q!=NULL){
				p=q->prox_aresta;
				while(p!=NULL){
					matriz[q->vertice][p->arestas]=p->custo;
					p=p->prox_aresta;
				}
				q=q->prox;
			}
			for(i=0;i<maior+1;i++){
				for(j=0;j<maior+1;j++){
					printf("|%d| ", matriz[i][j] );
				}
				printf("\n");
			}
		}
		//prim
		else if(entrada=='i'){
			int distancia[buscamaior(&G)], pai[buscamaior(&G)], key[buscamaior(&G)];
			no *q;
			q=G.inicio;
			algoritimo_prim(&G,distancia,pai,key);
			while(q!=NULL){
				printf("%d --- %d\n",pai[q->vertice],key[q->vertice] );
				q=q->prox;
			}
			

		}
		//djikistra
		else if(entrada =='d'){
			int distancia[buscamaior(&G)], pai[buscamaior(&G)];
			no *q;
			q=G.inicio;
			dijkstra(&G,q->vertice,distancia,pai);
			while(q!=NULL){
				printf("%d ---- %d\n",distancia[q->vertice],pai[q->vertice] );
				q=q->prox;
			}
		}
		printf("---------------------------------------------------------------------------\n");
		//scanf(" %c",&entrada);
	}

	return 0;
}