Advertisement
FrankTominc

Passeio

Aug 22nd, 2014
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. /*  Busca em profundidade com memoização
  2.     Problema: Passeio da Bicicleta
  3.     Descobre qual a profundidade maxima a partir de um nó inicial
  4.     Entrada: Grafo Acíclico - Lista de adjacencias
  5.     Saida: Profundidade Maxima a partir de um nó inicial
  6. */
  7.  
  8. #include <cstdio>
  9. #include <cstdlib>
  10. #include <vector>
  11. #include <cstring>
  12.  
  13. using namespace std;
  14.  
  15. vector < vector<int> > Grafo;
  16.  
  17. int melhor[160],alturas[160];
  18.  
  19. int BPA(int vertice){
  20.     int temp;
  21.     if(melhor[vertice] == -1){
  22.         melhor[vertice] = 0;
  23.         for (std::vector<int>::iterator it = Grafo[vertice].begin(); it != Grafo[vertice].end(); it++){
  24.             temp=1+BPA(*it);
  25.             if(temp > melhor[vertice])
  26.                 melhor[vertice] = temp;
  27.         }
  28.     }
  29.     return melhor[vertice];
  30. }
  31.  
  32. int main(){
  33.  
  34.     int P,L,I,aux,aux2,N,K = 0;
  35.     while(scanf("%d %d %d", &P, &L, &I) && P){
  36.         Grafo.resize(0);
  37.         Grafo.resize(P);
  38.         for(int i = 0; i < P; i++){
  39.             scanf("%d", &aux);
  40.             alturas[i] = aux;
  41.             melhor[i] = -1;
  42.         }
  43.        
  44.         for(int i = 0; i < L; i++){
  45.             scanf("%d %d", &aux, &aux2);
  46.             if(alturas[aux2-1] < alturas[aux-1])
  47.                 Grafo[aux-1].push_back(aux2-1);
  48.         }
  49.        
  50.         printf("Teste %d\n",++K);
  51.         printf("%d\n\n",BPA(I-1));
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement