#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1010, maxm=10010, INF=0x3f3f3f3f;
int n, m, s, dis[maxn], u[maxm], v[maxm], w[maxm];
bool bellman_Ford()
{
for(int i=1; i<=m; i++) dis[i]=(i==s) ? 0 : INF;
for(int k=1; k<=n-1; k++)
for(int j=1; j<=m; j++)
if(dis[v[j]]>dis[u[j]]+w[j])
dis[v[j]]=dis[u[j]]+w[j];
for(int i=1; i<=m; i++)
if(dis[v[i]]>dis[u[i]]+w[i]) return 0;
return true;
}
int main()
{
scanf("%d%d%d", &n, &m, &s);
for(int i=1; i<=m; i++) scanf("%d%d%d", &u[i], &v[i], &w[i]);
if(bellman_Ford()) for(int i=1; i<=n; i++) printf("%d ", dis[i]);
else printf("have negative circle\n");
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步