RE了19个点(
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+7;
const int maxm=2e5+7;
struct edge
{
int to;
int last;
int val;
};
edge e[maxm];
int head[maxn];
int tot=0;
int dist[maxn];
int cnt[maxn];
int vis[maxn];
inline void adde(int u,int v,int w)
{
e[++tot].to=v;
e[tot].last=head[u];
e[tot].val=w;
head[u]=tot;
}
bool spfa(int n,int s)
{
memset(dist,0x3f,sizeof(dist));
memset(vis,0,sizeof(vis));
queue<int> q;
dist[s]=0;
vis[s]=1;
cnt[s]++;
q.push(s);
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i!=0;i=e[i].last)
{
int v=e[i].to;
if(dist[v]>dist[u]+e[i].val)
{
dist[v]=dist[u]+e[i].val;
if(!vis[v])
{
cnt[v]++;
if(cnt[v]>=n+1)return false;
vis[v]=1;
q.push(v);
}
}
}
}
return true;
}
signed main()
{
int n=0,m=0,u=0,v=0,w=0;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>u>>v>>w;
adde(v,u,-w);
adde(u,v,w);
}
for(int i=1;i<=n;i++)
{
adde(0,i,0);
}
if(spfa(n,0)==false)
{
cout<<"Orz";
return 0;
}
for(int i=1;i<=n;i++)
{
cout<<dist[i];
if(i<n)cout<<' ';
}
return 0;
}