#include "stdio.h" #include "stdlib.h" #include "unistd.h" #define MAX_VERTICES 256 char *edge1,*edge2; // Edges we store in here char *edges; // NxN matrix :) char vtex[MAX_VERTICES]; // vtex[i] = vertices available char posn[MAX_VERTICES]; // posn[i] = where is vertex i? char best[MAX_VERTICES]; // the best permutation so far char used[MAX_VERTICES]; // tracks vertices used in the solution char maxl[MAX_VERTICES]; // tracks max len of edge during backtracking char rmap[MAX_VERTICES]; // used for dynamic randomizing char larg[MAX_VERTICES]; // used to keep track of the first largest edge int n; // number of vertices int m; // number of edges int minv; // Smallest longest edge int cnt=0; int glug=0; inline int max_edge() { int v=0, maxv=0, v1,v2; for (int i=0; i maxv) { maxv = v; glug=v1; if (random()%2) glug=v2; } } return maxv; } void find_sol(int level) { int nv, len, a, b, j, k; int i; int t,w, flag, nv2; if (level==n) { int maxv=max_edge(); // maxl[level-1]; if (maxv=0 && v1=0 && v2om) { j=vtex[v1]; vtex[v1]=vtex[v2]; vtex[v2]=j; posn[vtex[v1]]=v1; posn[vtex[v2]]=v2; }; cnt++; v2 = random() % n; } while (nm>=om && cnt<50); } minv = max_edge(); for (i=0; i