int heuristic_info[NODES];

void ini_heuristic_info()
{
 int i,j;

 for(i=0;i<n;i++){heuristic_info[i]=0;}
 for(i=0;i<n;i++)for(j=i+1;j<n;j++)if(there_is_constraint(i,j))
   {heuristic_info[i]++;heuristic_info[j]++;}
}


int selec_var()
{
  int var_min,i;
  float min;
  
  min=1000000.0; var_min=-333;
  for(i=0;i<n;i++)if(assignments[i]==-1)
    {
      if(((float)List_n_of_elem(&feasible_values[i])/
	 (float)(heuristic_info[i]+1)<min))
	{
	  min=(float)List_n_of_elem(&feasible_values[i])/
	    (float)(heuristic_info[i]+1);
	  var_min=i;
	}
    }
  for(i=0;i<n;i++)if(assignments[i]==-1 && i!=var_min && there_is_constraint(i,var_min))
    heuristic_info[i]--;
  return(var_min);
}

void selec_var_inv(int var_min)
{
  int i;
  for(i=0;i<n;i++)if(assignments[i]==-1 && i!=var_min && there_is_constraint(i,var_min))
    heuristic_info[i]++;
  
}
