@[Guderian_houjt](/user/385869) 你把你的手写函数和调用方法一起发出来吧。
by litjohn @ 2024-03-24 21:33:27
here.
```cpp
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1500+10;
const long long MINN=-(5e9+10);
struct edge
{
int ver;
long long val;
};
vector<edge> g[MAXN];
long long dist[MAXN];
bool vis[MAXN];
int n,m;
void memset_it()
{
for(int i=1;i<=n;i++)
{
dist[i]=MINN;
}
}
void spfa(int root)
{
queue<int> q;
memset_it();
dist[root]=0;
q.push(root);
vis[root]=true;
while(!q.empty())
{
int u;
u=q.front();q.pop();
vis[u]=false;
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i].ver,w=g[u][i].val;
if(dist[u]+w > dist[v])
{
dist[v]=dist[u]+w;
if(!vis[v])
{
q.push(v);
vis[v]=true;
}
}
}
}
}
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
edge in;
in.ver=v;in.val=w;
g[u].push_back(in);
}
spfa(1);
/*for(int i=1;i<=n;i++)
{
cout<<dist[i]<<endl;
}
cout<<endl;*/
if(dist[n]!=MINN) cout<<dist[n]<<endl;
else cout<<-1<<endl;
return 0;
}
/*
5 8
1 2 2
1 3 5
2 3 4
2 4 6
3 4 1
3 5 12
4 5 10
1 5 12
*/
```
@[litjohn](/user/537934)
by Guderian_houjt @ 2024-03-24 21:50:43
@[litjohn](/user/537934)
主要是第二个点有问题
by Guderian_houjt @ 2024-03-24 21:56:25
@[Guderian_houjt](/user/385869) 你要是把MINN改小一点试试呢,比如负的0x3f3f3f3f3f3f3f3f。
by Kazeno_Akina @ 2024-03-24 21:58:21
@[DoraYaoxy](/user/612567)
用LLONG_MIN也不行,第二个点过不了
by Guderian_houjt @ 2024-03-24 22:00:29