fundo tópico
Mestre recentemente se apaixonar. Mas é um amor não correspondido. "Mesmo um amor não correspondido, mas também cheio de amor," nunca desistir da busca de seu mestre. Hoje, esta manhã ensolarada, o sol subindo lentamente a partir do oeste. Então ele encontra um mestre, espero que antes do início da manhã lendo juntos e andando especialistas juntos em montanhas Ngau Tau. É claro, os especialistas não vai dar a oportunidade deste sonho, ele estava pronto para tudo.
título Descrição
Aotou montanha tem n Ponto de Vista e fuga entre o total de m vinte e dois pontos cénicas. Que ele não gosta de mestre processo muito emocionante, por isso aqueles cênica manchas especialista é nenhuma maneira que não vai optar por ir. Além disso, ela não gostava de ir para uma vista dos mesmos pontos mais de uma vez. Os especialistas querem que eles juntos desde o mais longo (não vai conversar com os especialistas durante a visualização), um mestre conhecido do transporte para que eles possam começar em qualquer um dos pontos de interesse turístico, mas também uma visão do fim de qualquer atrações.
Formato de entrada
A primeira linha, com os dois espaços separados por um inteiro n, m, depois de m linhas, a informação de cada pista: ambas as extremidades do número do ponto de visualização, o comprimento.
Formato de saída
Um inteiro que representa a sua mais longa viagem acompanhada.
de entrada de amostra e de saída
Entrada # 1
4 6
1 2 10
2 3 20
3 4 30
4 1 40
1 3 50
2 4 60
Saída # 1
150
Descrição / Dicas
Para 100% dos dados: n≤20, m≤50, não garante a ligação entre uma pluralidade de pontos de observação fuga vinte e dois.
Problema idéias solução:
Este é um problema mais fundamental encontrada no fundo, o pensamento muito claro. A chave é como armazenar esta informação para ajudar-nos a não procurar e como implementar a mesma atração mais de uma vez, como procurar o caminho mais longo.
1. Para o problema do armazenamento aqui é a matriz de adjacência (matriz realmente bidimensional), tal como a [i] [j] armazenado no comprimento do caminho de i-ésimo e j-ésimo pontos de interesse da paisagem, caso não esteja presente entre os dois pontos de interesse estrada é definido como 0.
2. Para não a mesma atração mais de uma vez, andou pontos marcados 1, novamente para evitar a pesquisa, evitando assim a possibilidade de ser procurado após uma busca até que saia a busca atual quando rescaling 0 atrações.
3. Para a estrada mais longa de vista, já que cada busca é de um ponto de partida fixa da pesquisa, isso não garante que o ponto de partida atual para a apreensão de todos os caminhos pode ser a peça mais longa, de modo que em cada ponto procurar ponto mais uma vez começando, e continuamente atualizar o caminho máximo.
código:
. 1 #include <o iostream> 2 #include <algoritmo> . 3 #include <CString> . 4 o uso de espaço de nomes DST; . 5 . 6 // pode ser usado para armazenar um relacionamento matriz binária . 7 int Mapa [ 51 é ] [ 51 é ] = { 0 }; . 8 int n-, m; . 9 int Em Bandeira [ 21 é ] = { 0 }; // 0 indica não visitado, 1 representa já visitados 10 int Maxx = 0 ; // distância máxima . 11 vazio DFS ( int CUR,int SUM) { 12 é na bandeira [CUR] = 1. ; // representa visitar 13 é // cout << "CUR;" CUR << << "SUM:" << endl << SUM; 14 15 int FF = 0 ; 16 para ( int I = 1. ; I <= n-; i ++ ) { 17. IF (Flag In [I] == 1. ) Continuar ; // salto embarrass 18 é IF (! Mapa [CUR] [I] = 0 ) { . 19 FF = 1 ; // marcas o ponto ainda pode continuar 20 DFS (I, + SUM Mapa [CUR] [I]); 21 é na bandeira [I] = 0 ; // trás, uma bandeira para cancelar o acesso back-off 22 é } 23 é } 24 IF (FF == 0 ) { // representantes assim, aqui sem saída actualizações do máximo, para evitar o acesso repetido de atracções 25 Maxx = max (Maxx, SUM); 26 é } 27 de retorno ; 28 } 29 int main () { 30 CIN >> >> n- m; 31 é 32 por ( int K = 1. ; K <= m; K ++ ) { 33 é int T1 = 0 , T2 = 0 ; 34 é CIN >> T1 >> T2; 35 CIN >> mapa [T1] [T2]; // apenas uma entrada geral, determina-se que o mapa disponível [i] [j] ou mapa [ J] [I] 36 Mapa [T2] [T1] = Mapa [T1] [T2]; 37 [ } 38 é 39 40 para ( int I = 1. ; I <= N-; i ++ ) { 41 é Memset (FLAG em, 0 , sizeof (bandeira)); // cada pesquisa sinal vazio 42 da DFS (i, 0 ); // das atracções i iniciar a pesquisa 43 } 44 cout << maxx; 45 46 retorno 0 ; 47 }