#include<bits/stdc++.h>
using namespace std;
const int maxn=5e4+5;
const int maxm=maxn;
int head[maxn],w[maxm],v[maxm],nex[maxm],cnt,dis[maxn],vis[maxn];
int ans[maxn];
void add(int x,int y,int z){
v[++cnt]=y;
w[cnt]=z;
nex[cnt]=head[x];
head[x]=cnt;
}
int n,m;
bool spfa(){
queue<int> q;
memset(dis,-0x3f,sizeof dis);
q.push(0);
//vis[0]=1;
while(!q.empty()){
int node=q.front();q.pop();vis[node]=0;
for(int i=head[node];i;i=nex[i]){
int to=v[i];
if(dis[to]<dis[node]+w[i]){
dis[to]=dis[node]+w[i];
ans[to]=ans[node]+1;
if(ans[to]>n) return false;
if(!vis[to]){
q.push(to);
vis[to]=1;
}
}
}
}
return true;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
add(x,y,-z);
}
for(int i=1;i<=n;i++) add(0,i,0);
if(!spfa()) cout<<"NO"<<endl;
else {
for(int i=1;i<=n;i++) cout<<dis[i]<<' ';
}
}
RT,不初始化-0x3f就0分,初始化了就ac,是数据范围的问题还是什么,我记得判负环是不用初始化dis数组的