手写函数失效???

P1807 最长路

@[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


|