计蒜客题目链接:https://nanti.jisuanke.com/t/41305

给定的起点是S,终点是T,反向跑一下就可以了,注意判负环以及每次查询需要添加边

AC代码:

#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;
struct node{
vector<int> v;
vector<int> w;
}g[305];
void addedge(int x,int y,int w){
g[x].v.push_back(y);
g[x].w.push_back(w); //建图操作
}
int n,m;
int inq[305],cnt[305],d[305];
bool bellman_ford(int s,int t){
queue<int> Q;
memset(inq,0,sizeof(inq));
memset(cnt,0,sizeof(cnt));
memset(d,inf,sizeof(d));
d[s] = 0;
inq[s] = 1;
Q.push(s);
while(!Q.empty() ){
int u = Q.front() ;
Q.pop();
inq[u] = 0;
for(int i = 0;i<g[u].v.size() ;i++ ){
int e = g[u].w[i];
int v = g[u].v[i];
if(d[u]<inf && d[v] > d[u] + e){
d[v] = d[u] + e;
if(!inq[v]){
Q.push(v);
inq[v] = 1;
if(++cnt[v] > n){
return false;//判定负环,若一个节点入队列超过n次则出现负环
}
}
}
}
}
return true;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i = 0;i<305;i++){
g[i].v.clear() ,g[i].w.clear() ; //清空图
}
for(int i = 1;i<=m;i++){
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
addedge(x,y,w);
}
for(int i = 0;i<6;i++){
int s,t;
scanf("%d%d",&s,&t);
bellman_ford(t,s);
printf("%d\n",-d[s]);
addedge(s,t,-d[s]);//以题意在原图添加新的边
}
}
return 0;
}

最新文章

  1. c++中的继承与初始化
  2. 处于同一个域中的两台Sql server 实例无法连接
  3. NoSQL数据库介绍
  4. 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他
  5. DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置
  6. 设置VMWARE通过桥接方式使用主机无线网卡上网
  7. ImageSwitcher的应用
  8. inno setup 多语言安装
  9. Mysql动态多条件查询
  10. MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试
  11. 深入浅出jsonp(转)
  12. django restul webservice返回json数据
  13. MongoDB学习总结(四) —— 索引的基本用法
  14. vuex commit保存数据技巧
  15. netty-socketio 概述
  16. git回滚部分文件到某个版本
  17. HTML元素粘滞融合效果
  18. python学习笔记(23)——python压缩bin包
  19. 对Oracle的游标进行更为精细的控制
  20. bzoj千题计划124:bzoj1036: [ZJOI2008]树的统计Count

热门文章

  1. VS打包程序步骤
  2. GitHub概述
  3. django csrf 中间件
  4. SVM-支持向量机(一)线性SVM分类
  5. [AT3867] Digit Sum 2
  6. 立即关机C++源码
  7. ArcMap空间参考警告窗口关了怎么重新打开
  8. Python之二:基础知识
  9. 2.js将Date对象转换成“2018-05-10”字符串格式化的时间
  10. [HEOI2015] 小Z的房间 - 矩阵树定理