另附82分屑代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int num[4505], dis[4005], n, m;
bool vis[4505];
struct node{
int to, nxt, w;
}e[50005];
int head[50005], cnt;
void add(int u, int v, int w) {
e[++cnt].to = v;
e[cnt].nxt = head[u];
e[cnt].w = w;
head[u] = cnt;
}
queue<int> q;
int main() {
cin>>n>>m;
for(int i = 1; i <= m; i++) {
int u, v, w;
cin>>u>>v>>w;
add(u, v, w);
}
q.push(1);
memset(dis, -0x3f, sizeof(dis));//改成for(int i = 1; i <= n; i++) dis[i] = -114514;并在最后判断就过了
dis[1] = 0;
vis[1] = 1;
num[1]++;
while(!q.empty()) {
int u = q.front();
q.pop();
if(num[u] > n) {
cout<<"-1";
return 0;
}
for(int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to;
if(dis[v] < dis[u] + e[i].w) {
dis[v] = dis[u] + e[i].w;
if(!vis[v]) {
num[v]++;
vis[v] = 1;
q.push(v);
}
}
}
vis[u] = 0;
}
if(dis[n] == -0x3f3f3f3f) dis[n] = -1;
cout<<dis[n];
return 0;
}
by Midnight_szx @ 2024-01-23 15:57:43
@[Midnight_szx](/user/801371) 因为-0x3f=0xC1,所以memset时dis会赋成0xc1c1c1c1,而末尾所判为-0x3f3f3f3f=0xc0c0c0c1,二者不相等,故有误。
by murder_drones @ 2024-01-24 08:11:50
@[runzelasb](/user/610393) 哇谢谢
by Midnight_szx @ 2024-01-24 08:25:12
@[runzelasb](/user/610393) %%%orz
by Midnight_szx @ 2024-01-24 08:25:28