示例#1
0
int GRAPHpathH( Graph *G, int v, int w )
{
    int t;
    for( t = 0; t < G->V; t++ )
        visited[t] = 0;
    return pathR( G, v, w, G->V-1 );
}
示例#2
0
int pathR( Graph *G, int v, int w, int d )
{
    int t;
    printf("O que já foi visitado?\n");
    for( t = 0; t < G->V; t++ )
        printf("%d=%d, ", t, visited[t]);
    printf("\n");
    if( v == w )
    {
        if( d == 0 )
            return 1;
        else
            return 0;
    }
    visited[v] = 1;         /// Erro aqui. Rever o livro.
    for( t = 0; t < G->V; t++ )
        if( G->adj[v][t] == 1 )
            if( visited[t] == 0 )
                if( pathR( G, t, w, d-1 ) ){
                    printf("%d-> ", t );
                    return 1;
                }
    visited[v] = 0;
    return 0;
}
示例#3
0
文件: matriz.c 项目: marcosf63/Grafos
/*função básica*/
void pathR(Digraph G, Vertex v){
  Vertex w;
  lbl[v] = 0;
  for (w = 0; w < G->V; w++)
    if (G->adj[v][w] == 1)
      if (lbl[w] == -1){
        parnt[w] = v;
        pathR(G, w);
      }
}
示例#4
0
void pathR(Digraph G, Vertex v){
  link n;

  lbl[v] = 0;
  for(n = G->adj[v]; n != NULL; n = n->next)
    if(lbl[n->w] == -1){
      parnt[n->w] = v;
      pathR(G, n->w);
    }
}
int DIGRAPHpath(Digraph G, Vertex s, Vertex t){
  lblReset();

  pathR(G,s);

  if(lbl[t] == -1){
    return 0;
  }else{
    return 1;
  }
}
void pathR(Digraph G, Vertex v){
  int i;

  lbl[v] = 1;
  
  for(i = 0; i < G->V; i++){
    if(G->adj[v][i] == 1 && lbl[i] == -1){
      pathR(G, i);
    }
  }
} 
示例#7
0
/*Func que procura caminho de v-->w */
int DIGRAPHpath(Digraph G, Vertex s, Vertex t){
    Vertex v;
    for(v=0; v<G->V; v++){
        lbl[v]=0;
        parnt[v]=-1;
    }
/*        lbl[v]=-1;
    pathR(G,s);
    return lbl[t]!=-1;*/
    parnt[s] = s;
    return pathR(G,s,t);
}
示例#8
0
/*Resolucao do professor para pathR parando ao encontrar t*/
int pathR(Digraph G, Vertex v, Vertex t){
    Vertex w;
    lbl[v] = 1;
    if(v==t) return 1;
    for(w = 0; w<G->V; w++)
        if(G->adj[v][w] && !lbl[w]){
            parnt[w] = v;
            if (pathR(G, w, t))
                return 1;
        }
    return 0;
}
示例#9
0
文件: matriz.c 项目: marcosf63/Grafos
/*função básica*/
int DIGRAPHpath(Digraph G, Vertex s, Vertex t){
  Vertex v;
  for (v = 0; v < G->V; v++){
    lbl[v] = -1;
    parnt[v] = -1;
  }
  parnt[s] = s;
  pathR(G, s);
  if (lbl[t] == -1)
    return 0;
  else
    return 1;
}
示例#10
0
文件: matriz.c 项目: marcosf63/CC
int DIGRAPHpath(Digraph G, Vertex s, Vertex t) {
  Vertex v;
  
  for (v = 0; v < G->V; v++)
    lbl[v] = -1;

  pathR(G,s);

  if (lbl[t] == -1) return 0;

  return 1;

}
示例#11
0
文件: graph.c 项目: renatocf/MAC0328
int DIGRAPHpath(Digraph G, Vertex s, Vertex t)
{
    Vertex v;
    for(v = 0; v < G->V; v++) 
    {
        lbl[v] = 0;
        parnt[v] = -1;
    }
    
    parnt[s] = s;
    pathR(G,s);
    
    return lbl[t];
}
示例#12
0
文件: matriz.c 项目: marcosf63/Grafos
/*função básica - modificada*/
void pathR2(Digraph G, Vertex v, Vertex t){
  Vertex w;
  lbl[v] = 0;
  for (w = 0; w < G->V; w++)
    if ( w == t) {
      lbl[w] = 0;
      break;
    } else {
      if (G->adj[v][w] == 1)
        if (lbl[w] == -1){
          parnt[w] = v;
          pathR(G, w);
        }
   }
}
示例#13
0
int DIGRAPHpath(Digraph G, Vertex s, Vertex t){
  int i;

  for(i = 0; i < G->V; i++){
    lbl[i] = -1;
  }

  pathR(G,s);

  if(lbl[t] == -1){
    return 0;
  }else{
    return 1;
  }
}