zoukankan      html  css  js  c++  java
  • Bellman-Ford算法:POJ No.3169 Layout 差分约束

     1 #define _CRT_SECURE_NO_WARNINGS
     2 /*
     3 4 2 1
     4 1 3 10 2 4 20
     5 2 3 3
     6 */
     7 #include <iostream>
     8 #include <algorithm>
     9 #include <cstdio>
    10 #include <cstdlib>
    11 using namespace std;
    12 
    13 const int maxn = 10000 + 200;
    14 const int INF = 999999;
    15 //输入
    16 int N, ML, MD;
    17 int AL[maxn], BL[maxn], DL[maxn];
    18 int AD[maxn], BD[maxn], DD[maxn];
    19 
    20 int d[maxn];
    21 
    22 void solve()
    23 {
    24     fill(d, d + N, INF);
    25     d[0] = 0;
    26 
    27     //用Bellman-Ford算法计算d
    28     for (int k = 0; k < N; k++) {
    29         //从i+1到i的权值为0
    30         for (int i = 0; i + 1 < N; i++) {
    31             if (d[i + 1] < INF) d[i] = min(d[i], d[i + 1]);
    32         }
    33         //从AL到BL的权值为DL
    34         for (int i = 0; i < ML; i++) {
    35             if (d[AL[i] - 1] < INF) {
    36                 d[BL[i] - 1] = min(d[BL[i] - 1], d[AL[i] - 1] + DL[i]);
    37             }
    38         }
    39         //从BD到AD的权值为-DD
    40         for (int i = 0; i < MD; i++) {
    41             if (d[BD[i] - 1] < INF) {
    42                 d[AD[i] - 1] = min(d[AD[i] - 1], d[BD[i] - 1] - DD[i]);
    43             }
    44         }
    45     }
    46     int res = d[N - 1];
    47     if (d[0] < 0) {
    48         //存在负边无解
    49         res = -1;
    50     }
    51     else if (res == INF) {
    52         res = -2;
    53     }
    54     printf("%d
    ", res);
    55 }
    56 
    57 void input()
    58 {
    59     cin >> N >> ML >> MD;
    60     for (int i = 0; i < ML; i++) {
    61         cin >> AL[i] >> BL[i] >> DL[i];
    62     }
    63     for (int i = 0; i < MD; i++) {
    64         cin >> AD[i] >> BD[i] >> DD[i];
    65     }
    66 }
    67 
    68 int main()
    69 {
    70     input();
    71     solve();
    72     return 0;
    73 }
  • 相关阅读:
    团队选题报告
    结对编程作业服务器端总结
    结对编程作业服务器端系统设计、玩法和接口简要
    第一次团队展示
    第一次个人编程作业技术助教总结
    第一次个人编程作业输入输出格式及注意事项
    第一次博客作业
    课程总结
    团队作业-个人总结
    团队作业总结
  • 原文地址:https://www.cnblogs.com/douzujun/p/6422086.html
Copyright © 2011-2022 走看看