Пример #1
0
int check_path()
{
	int i;
	int first_par;
	int odd_node = 0;
	vet_st *pv;

	first_par = find_par(begin);
	for (i = 1; i <= n_vetex; i++) {
		pv = &vetexs[i];
		if (pv->valid && first_par != find_par(i)) {
			return 1;
		}
	}

	for (i = 1; i <= n_vetex; i++) {
		pv = &vetexs[i];
		if (pv->valid && deg[i]%2 == 1) {
			begin = i;
			odd_node++;
		}
	}

	if (odd_node == 0 || odd_node == 2) {
		return 1;
	} else {
		return 0;
	}
}
Пример #2
0
void setsets(int u, int v)
{
	int s1,s2, tmp;

	if (u == v)
		return ;

	s1 = find_par(u);
	s2 = find_par(v);
	tmp = sets[s1] + sets[s2];
	if (sets[s1] > sets[s2]) {
		sets[s1] = s2;
		sets[s2] = tmp;
	} else {
		sets[s2] = s1;
		sets[s1] = tmp;
	}
}
Пример #3
0
int par_exist(char *block, char *name)
{
  Block *bp;
  Par *pp;

  if (!now_open) ath_error("par_exist: No open parameter file\n");
  if (block == NULL) ath_error("par_exist: no block name specified\n");
  if (name  == NULL) ath_error("par_exist: no par name specified\n");
  bp = find_block(block);
  if (bp == NULL) return 0;
  pp = find_par(bp,name);
  return (pp == NULL ? 0 : 1);
}
Пример #4
0
static char *par_getsl(char *block, char *name)
{
  Block *bp;
  Par *pp;

  if (!now_open) ath_error("par_gets: No open parameter file\n");
  if (block == NULL) ath_error("par_gets: no block name specified\n");
  if (name  == NULL) ath_error("par_gets: no par name specified\n");
  bp = find_block(block);
  if (bp == NULL) ath_error("par_gets: Block \"%s\" not found\n",block);
  pp = find_par(bp,name);
  if (pp == NULL)
    ath_error("par_gets: Par \"%s\" not found in Block \"%s\"\n",name,block);
  return pp->value;
}
Пример #5
0
void par_cmdline(int argc, char *argv[])
{
  int i;
  char *sp, *ep;
  char *block, *name, *value;
  Block *bp;
  Par *pp;
  int len;

  if (debug) printf("PAR_CMDLINE: \n");
  for (i=1; i<argc; i++) {
    block = argv[i];
    sp = strchr(block,'/');
    if ((sp = strchr(block,'/')) == NULL) continue;
    *sp = '\0';
    name = sp + 1;

    if((ep = strchr(name,'=')) == NULL){
      *sp = '/'; /* Repair argv[i] */
      continue;
    }
    *ep = '\0';
    value = ep + 1;

    if (debug) printf("PAR_CMDLINE: %s/%s=%s\n",block,name,value);
    bp = find_block(block);
    if (bp == NULL) ath_error("par_cmdline: Block \"%s\" not found\n",block);
    pp = find_par(bp,name);
    if (pp == NULL) ath_error("par_cmdline: Par \"%s\" not found\n",name);
    free(pp->value);
    pp->value = my_strdup(value);

    len = (int)strlen(value); /* Update the maximum Par value length */
    bp->max_value_len = len > bp->max_value_len ? len : bp->max_value_len;

/* Repair argv[i] */
    *sp = '/';
    *ep = '=';
  }
}