求助,Ford POJ 题
  • 板块学术版
  • 楼主liuzimingc
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/8/11 21:48
  • 上次更新2023/11/4 10:59:32
查看原帖
求助,Ford POJ 题
421781
liuzimingc楼主2021/8/11 21:48

题目:Link

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 505, MAXM = 10005;

int t, n, m, k, x, y, z, tot;
int dis[MAXN], u[MAXN], v[MAXN], w[MAXN];
int main() {
    // freopen("1.in", "r", stdin);
    // freopen("1.out", "w", stdout);
    cin >> t;
    while (t--) {
        cin >> n >> m >> k;
        while (m--) {
            cin >> x >> y >> z;
            u[++tot] = x; v[tot] = y; w[tot] = z;
            u[++tot] = y; v[tot] = x; w[tot] = z;
        }
        while (k--) {
            cin >> x >> y >> z;
            u[++tot] = x; v[tot] = y; w[tot] = -z;
        }
        memset(dis, 0x7f, sizeof(dis));
        dis[1] = 0;
        string ans = "NO";
        for (int i = 1; i < n; i++)
            for (int j = 1; j <= tot; j++)
                dis[v[i]] = min(dis[v[i]], dis[u[i]] + w[j]);
        for (int i = 1; i <= tot; i++)
            if (dis[v[i]] > dis[u[i]] + w[i]) {
                // cout << dis[v[i]] << endl << dis[u[i]] << endl << w[i] << endl;
                ans = "YES";
                break;
            }
        cout << ans << endl;
    }
    return 0;
}

数据:

输入:
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8
输出:
NO
YES
我的输出:
YES
YES

死活不知道哪里写炸了……

2021/8/11 21:48
加载中...