P5960 【模板】差分约束(spfa)
由于题目没有说是连通图,所以最开始时要把所有点加入队列
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
struct node {
int id;
int dis;
};
const int N=5*1e4;
#define int long long
int cnt[N];
int w[N];
int vis[N];
vector<node>vi[N];
int n,m;
bool spfa(){
queue<int>q;
for(int i=1;i<=n;i++){
q.push(i);
vis[i]=1;
}
for(int i=1;i<=n;i++)w[i]=1e9;
w[1]=0;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
for(int i=0;i<vi[u].size();i++){
int v=vi[u][i].id;
if(w[u]+vi[u][i].dis<w[v]){
w[v]=w[u]+vi[u][i].dis;
cnt[v]=cnt[u]+1;
if(cnt[v]>=n-1){
return 0;
}
if(!vis[v]){
q.push(v);
vis[v]=1;
}
}
}
}
return 1;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int c1,c2,y;
cin>>c1>>c2>>y;
vi[c1].push_back({c2,y});
}
if(spfa())for(int i=1;i<=n;i++)cout<<-w[i]<<" ";
else cout<<"NO";
return 0;
}
分类:
图 / 最短路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理