zoukankan      html  css  js  c++  java
  • 洛谷P1294 高手去散步 搜索

    洛谷P1294 高手去散步
    搜索
    求一个图的最长路
    从任意点出发 任意点结束的最长路

    dfs深搜 枚举 那个点是起点
    其实正宗最长路 在中间也要判一下最大
    防止图中有负权边

     1 #include <cstdio>
     2 #include <cmath>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <string>
     6 #include <algorithm>
     7 #include <iomanip>
     8 #include <iostream>
     9 using namespace std ; 
    10 
    11 const int maxn = 21,maxm = 51,inf = 1e9 ; 
    12 int n,m,cnt,mx ; 
    13 int head[maxn] ; 
    14 bool visit[maxn] ; 
    15 struct node{
    16     int to,val,pre ; 
    17 }e[maxm*2];
    18 
    19 inline int read() 
    20 {
    21     char ch = getchar() ; 
    22     int x = 0 , f = 1 ; 
    23     while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar() ; } 
    24     while(ch>='0'&&ch<='9') { x = x*10+ch-48 ; ch = getchar() ; } 
    25     return x * f ; 
    26 }
    27 
    28 inline void add(int x,int y,int v) 
    29 {
    30     e[++cnt].to = y ; 
    31     e[cnt].val = v ;
    32     e[cnt].pre = head[x] ; 
    33     head[x] = cnt ;  
    34 }
    35 
    36 inline void dfs(int u,int sum) 
    37 {
    38     if(sum > mx) mx = sum ; 
    39     int v ; 
    40     visit[ u ] = 1 ;  
    41     for(int i=head[u];i;i=e[ i ].pre) 
    42     {
    43         v = e[ i ].to ; 
    44         if(!visit[ v ]) 
    45             dfs(v,sum+e[ i ].val) ; 
    46     }
    47     visit[ u ] = 0 ; 
    48 }
    49 
    50 int main() 
    51 {
    52     n = read() ;    m = read() ; 
    53     int x,y,v ; 
    54     mx = -inf ; 
    55     for(int i=1;i<=m;i++) 
    56     {
    57         x = read() ; y = read() ; v = read() ; 
    58         add(x,y,v) ;  add(y,x,v) ; 
    59     } 
    60     for(int i=1;i<=n;i++) 
    61     {
    62         for(int j=0;j<=n;j++) visit[ j ] = 0 ;     //   初始化一下 
    63         dfs( i,0 ) ;  
    64     }
    65     printf("%d",mx) ; 
    66     return 0 ; 
    67 }
  • 相关阅读:
    第一次考核代码及1000字感想
    假期周进度报告2
    《大道至简》读后感
    FileInputFormat看这一段源码
    hadoop源码学习(-)
    linux下的文件解压命令
    Hadoop工作原理
    hadoop程序实例
    linux常用命令
    hadoop的输入和输出文件
  • 原文地址:https://www.cnblogs.com/third2333/p/7093555.html
Copyright © 2011-2022 走看看