zoukankan      html  css  js  c++  java
  • HDU 1224 无环有向最长路

    用bellman_ford的方法,将中间不断取较小值,修改为取较大值就可以了

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 using namespace std;
     5 const int N = 105;
     6 int dp[N] , k , first[N] , val[N] , x , y , fa[N] , rec[N];
     7 
     8 struct Edge{
     9     int x , y , next , d;
    10 }e[N*N];
    11 
    12 void add_edge(int x , int y , int d)
    13 {
    14     e[k].x = x , e[k].y = y , e[k].next = first[x] , e[k].d = d;
    15     first[x] = k++;
    16 }
    17 
    18 int main()
    19 {
    20     int T , n , cas = 0;
    21     scanf("%d" , &T);
    22     while(T--){
    23         scanf("%d" , &n);
    24         for(int i = 1 ; i<=n ; i++)
    25             scanf("%d" , val+i);
    26         val[n+1] = 0;
    27 
    28         int m;
    29         scanf("%d" , &m);
    30         k=0;
    31         for(int i = 0 ; i<m ; i++){
    32             scanf("%d%d" , &x , &y);
    33             add_edge(x , y , val[y]);
    34         }
    35 
    36         memset(dp , 0 , sizeof(dp));
    37         memset(fa , 0 , sizeof(fa));
    38         for(int i = 1 ; i<=n ; i++){
    39             for(int j = 0 ; j<k ; j++){
    40                 int u = e[j].x , v = e[j].y;
    41                 if(dp[v] < dp[u] + e[j].d){
    42                     dp[v] = dp[u] + e[j].d;
    43                     fa[v] = u;
    44                    // cout<<"here: "<<u<<" "<<v<<" "<<fa[v]<<" "<<dp[v]<<endl;
    45                 }
    46             }
    47         }
    48 
    49         printf("CASE %d#
    points : %d
    circuit : " , ++cas , dp[n+1]);
    50         int cnt = 0 , la = n+1;
    51         rec[cnt++] = 1;
    52         while(fa[la]){
    53             rec[cnt++] = fa[la];
    54             la = fa[la];
    55         }
    56         for(int i = cnt-1 ; i>=1 ; i--)
    57             printf("%d->" , rec[i]);
    58         printf("%d
    " , rec[0]);
    59         if(T>0) puts("");
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    vb动态创建控件
    100多个很有用的JavaScript函数以及基础写法汇总
    CodeFile与CodeBehind的区别
    asp.net防sql注入问题
    .NET创建目录和文件
    Asp.Net判断字符是否是数字
    Asp.Net随机中文汉字验证码
    禁用表单自动提示complete
    如何隐藏vs2005的起始页
    Asp.Net enableEventValidation
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4184417.html
Copyright © 2011-2022 走看看