题目水了?
  • 板块P1807 最长路
  • 楼主clarkwang
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/9/4 16:01
  • 上次更新2023/10/27 12:34:49
查看原帖
题目水了?
47425
clarkwang楼主2022/9/4 16:01

dp,但是不拓扑
过了。

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int n, m;
long long d[1501][1501];

int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1;i < n;i++) {
        for(int j = i + 1;j <= n;j++) {
            d[i][j] = -5000000001;
        }
    }
    for(int i = 1;i <= m;i++) {
        long long u, v, w;
        scanf("%lld%lld%lld", &u, &v, &w);
        d[u][v] = max(d[u][v], w);
    }
    for(int i = 1;i < n;i++) {
        for(int j = i + 1;j <= n;j++) {
            if(d[1][i] > -5000000001 && d[i][j] > -5000000001) {
                d[1][j] = max(d[1][j], d[1][i] + d[i][j]);
            }
        }
    }
    if(d[1][n] == -5000000001) {
        d[1][n] = -1;
    }
    printf("%lld", d[1][n]);
    return 0;
}
2022/9/4 16:01
加载中...