照着第一篇题解改的代码,但是不知道为什么就是过不了,我copy了第一篇题解,本地跑第一个测试点数据和我代码跑出来的都是-1, 但是把题解copy过来的代码提交就全AC了,实在不明白我代码哪里有问题了
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
int n, m;
struct Node {
vector<int>next;
int deg, val, dis;
}node[1505];
queue<int>que;
int main() {
cin >> n >> m;
for (int i = 1; i <= m; ++i) {
int u, v, w;
cin >> u >> v >> w;
node[u].val = w;
node[u].next.push_back(v);
++node[v].deg;
}
for (int i = 2; i <= n; ++i) {
node[i].dis = -1e9;
if (!node[i].deg) que.push(i);
}
while (!que.empty()) {
int c = que.front();
que.pop();
for (int i = 0; i < node[c].next.size(); ++i) {
int idx = node[c].next[i];
if (!--node[idx].deg) que.push(idx);
}
}
que.push(1);
while (!que.empty()) {
int c = que.front();
que.pop();
for (int i = 0; i < node[c].next.size(); ++i) {
int idx = node[c].next[i];
if (!--node[idx].deg) que.push(idx);
}
for (int i = 0; i < node[c].next.size(); ++i) {
int idx = node[c].next[i];
if (node[c].dis + node[c].val > node[idx].dis)
node[idx].dis = node[c].dis + node[c].val;
}
}
if (node[n].dis == -1e9) cout << "-1";
else cout << node[n].dis;
return 0;
}