孩纸想了好久没想到为什么错了,求助
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define int ll
using pii=pair<int,int>;
int n,m;
const int MAXV=3e3+10;
const int MAXE=6e3+10;
const int INF=1e9;
struct vertex{
int e=-1;
}v[MAXV];
struct edge{
int u,v,w,n=-1;
}e[MAXE];
int cntt;
void add(int U,int V,int W){
e[cntt].u=U,e[cntt].v=V,e[cntt].w=W;
e[cntt].n=v[U].e;
v[U].e=cntt++;
}
vector<int>h;
bool spfa(){
vector<int>cnt(n+1);
vector<bool>in(n+1);
queue<int>q;
h[0]=0,q.push(0),in[0]=1,cnt[0]++;
for(int i=1;i<=n;i++) add(0,i,0);
while(q.size()){
int U=q.front();in[U]=0,q.pop();
for(int i=v[U].e;~i;i=e[i].n){
int V=e[i].v,W=e[i].w;
if(h[U]!=INF&&W!=INF&&h[V]>h[U]+W){
h[V]=h[U]+W;
if(!in[V]){
q.push(V),in[V]=1,cnt[V]++;
if(cnt[V]>n){
return 1;
}
}
}
}
}
return 0;
}
vector<vector<int>>dis;
void dijkstra(int s){
priority_queue<pii,vector<pii>,greater<>>pq;//data index
vector<bool>S(n+1);
dis[s][s]=0,pq.push({dis[s][s],s});
while(pq.size()){
int U=pq.top().second;
if(S[U]){
pq.pop();
continue;
}
S[U]=1,pq.pop();
for(int i=v[U].e;~i;i=e[i].n){
int V=e[i].v,W=e[i].w;
if(!S[V]&&W!=INF&&dis[s][V]>dis[s][U]+W) dis[s][V]=dis[s][U]+W,pq.push({dis[s][V],V});
}
}
}
void johnson(){
bool s=spfa();
if(s){cout<<-1;return;}
for(int i=0;i<cntt;i++) e[i].w+=h[e[i].u]-h[e[i].v];
for(int i=1;i<=n;i++) dijkstra(i);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
dis[i][j]+=h[j]-h[i];
}
for(int i=1;i<=n;i++){
ll ans=0;
for(int j=1;j<=n;j++){
if(dis[i][j]==INF) ans+=j*INF;
else ans+=j*dis[i][j];
}
cout<<ans<<'\n';
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
while(m--){
int U,V,W;cin>>U>>V>>W;
add(U,V,W);
}
h.resize(n+1,INF),dis.resize(n+1,vector<int>(n+1,INF));
johnson();
return 0;
}