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 }
  • 相关阅读:
    CentOS7中使用yum安装Nginx的方法
    Flask&&人工智能AI --4
    Flask&&人工智能AI --3
    Flask&&人工智能AI --2
    Flask&&人工智能AI --1
    Linux--8
    Linux--7
    django 请求生命周期
    Linux--6 redis订阅发布、持久化、集群cluster、nginx入门
    Node.js Addons翻译(C/C++扩展)
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4184417.html
Copyright © 2011-2022 走看看