```cpp
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <cstring>
#include <set>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll N=2e5+10;
const ll inf=0x3f3f3f3f3f3f3f3f;
const ll MOD=998244353;
struct edge
{
ll v,w;
};
vector<edge> a[N];
ll dis[N],cnt[N];
bool vis[N];
ll n,m;
bool spfa(ll x)
{
memset(dis,0x3f,sizeof(dis));
queue<ll> q;
q.push(x);
dis[x]=0;
vis[x]=1;
while(!q.empty())
{
ll c=q.front();
q.pop();
vis[c]=0;
for(ll i=0;i<a[c].size();i++)
{
edge t=a[c][i];
if(dis[c]+t.w<dis[t.v])
{
dis[t.v]=dis[c]+t.w;
if(!vis[t.v])
{
cnt[t.v]++;
if(cnt[t.v]>n+100)
return 0;
q.push(t.v);
vis[t.v]=1;
}
}
}
}
return 1;
}
int main()
{
ios::sync_with_stdio(0);
ll n,m;
cin>>n>>m;
for(ll i=1;i<=n;i++)
{
a[0].push_back({i,0});
}
for(ll i=1;i<=m;i++)
{
ll u,v,w;
cin>>u>>v>>w;
a[v].push_back({u,w});
}
if(spfa(0))
{
for(ll i=1;i<=n;i++)
cout<<dis[i]<<" ";
cout<<endl;
}
else
cout<<"NO"<<endl;
return 0;
}
```
以上是错误代码
by Luke_li @ 2024-03-14 12:55:37