#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int N=100000;
struct V{
int u,v;
int w;
}edge[N];
int dis[N];
int n,m;
bool bellman_ford(){
memset(dis,INF,sizeof(dis));
for(int i=1;i<n;++i){
for(int j=1;j<=m;++j){
if(dis[edge[j].v]>dis[edge[j].u]+edge[j].w){
dis[edge[j].v]=dis[edge[j].u]+edge[j].w;
}
}
}
for(int j=1;j<=m;++j){
if(dis[edge[j].v]>dis[edge[j].u]+edge[j].w)
return false;
}
return true;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
edge[i].u=u,edge[i].v=v,edge[i].w=w;
}
if(bellman_ford())
cout<<“Yes\n”;
else cout<<“No\n”;
return 0;
}
判断负环模板
最新推荐文章于 2021-07-17 15:58:19 发布