Holy Grail Bellman-Ford/spfa
Bellman-Ford
#include <bits/stdc++.h>
using namespace std;
const int maxn = , maxm = ;
const int inf = 0x3f3f3f3f;
struct edge {
int v, w;
};
vector<edge> maps[maxn];
int dis[maxn], n, m; bool BellmanFord(int s) { // s为源点
fill(dis, dis+n, inf);
dis[s] = ;
for (int i = ; i < n-; i++) {
for (int u = ; u < n; u++) {
for (int j = ; j < maps[u].size(); j++) {
int v = maps[u][j].v;
int w = maps[u][j].w;
if (dis[u] + w < dis[v]) {
dis[v] = dis[u] + w;
}
}
}
}
for (int u = ; u < n; u++) {
for (int j = ; j < maps[u].size(); j++) {
int v = maps[u][j].v;
int w = maps[u][j].w;
if (dis[u] + w < dis[v])
return false;
}
}
return true;
}
int main() {
int t; scanf("%d",&t);
while (t--) {
scanf("%d%d",&n,&m);
for (int i = ; i < n; i++) maps[i].clear(); for (int i = ; i <= m; i++) {
int u, v, w; scanf("%d%d%d",&u,&v,&w);
maps[u].push_back(edge{v,w});
}
for (int i = ; i <= ; i++) {
int u, v; scanf("%d%d",&u,&v);
bool flag = BellmanFord(v);
printf("%d\n",-dis[u]); //if (flag == false) continue;
maps[u].push_back(edge{v,-dis[u]});
}
}
}
spfa
#include<bits/stdc++.h>
using namespace std;
const int maxn = , maxm = ;
struct edge {
int v, w;
};
vector<edge> maps[maxn];
int dis[maxn], n, m;
bool vis[maxn]; void add(int u, int v, int w) {
maps[u].push_back(edge{v,w});
}
void spfa(int s) {
memset(dis, 0x3f3f3f3f, sizeof(dis));
memset(vis,,sizeof(vis));
queue<int> que;
que.push(s), dis[s] = , vis[s] = true;
while(!que.empty()) {
int u = que.front();
que.pop();
vis[u] = false;
for(int i = ; i < maps[u].size(); i++) {
int v = maps[u][i].v;
int w = maps[u][i].w;
if(dis[v] > dis[u]+w) {
dis[v] = dis[u] + w;
if(vis[v] == false) {
que.push(v);
vis[v] = true;
}
}
}
}
}
int main() {
int t; scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for (int i = ; i < n; i++) maps[i].clear();
for(int i = ; i <= m; i++) {
int u, v, w; scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
for(int i = ; i <= ; i++) {
int u, v; scanf("%d%d",&u,&v);
spfa(v);
add(u,v,-dis[u]);
printf("%d\n",-dis[u]);
}
}
return ;
}
Holy Grail Bellman-Ford/spfa的更多相关文章
- ACM/ICPC 之 最短路径-Bellman Ford范例(POJ1556-POJ2240)
两道Bellman Ford解最短路的范例,Bellman Ford只是一种最短路的方法,两道都可以用dijkstra, SPFA做. Bellman Ford解法是将每条边遍历一次,遍历一次所有边可 ...
- poj1860 bellman—ford队列优化 Currency Exchange
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22123 Accepted: 799 ...
- 蓝桥杯 algo_5 最短路 (bellman,SPFA)
问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式 第一行两个整数n, m. 接下来的m行,每行有三个 ...
- uva 558 - Wormholes(Bellman Ford判断负环)
题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...
- Flex: Holy Grail
Flex:Holy Grail <html> <head> <style type="text/css"> body,div,header,ma ...
- 【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏
1.圣杯布局(Holy Grail Layout) 其指的是一种最常见的网站布局.页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer).其中躯干又水平分成三栏,从左 ...
- Bellman—Ford算法思想
---恢复内容开始--- Bellman—Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题.对于给定的带权(有向或无向)图G=(V,E),其源点为s,加权函数w是边集E的映射.对图G ...
- Bellman - Ford 算法解决最短路径问题
Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...
- Holy Grail【spfa求最短路】
题目链接:https://www.jisuanke.com/contest/3004?view=challenges 题目大意: 1.一个无向图,给出六个顶点,添六条边,但是添边是有限制的.每次添边的 ...
随机推荐
- beego微信网页授权
beego.Get("MP_verify_Rj3QAbcdU0MRsyS.txt", func(context *context.Context) { context.Respon ...
- uniqid用法
uniqid():妙用就是以当前时间微妙为单位,返回的唯一ID 我们可以用到密码加密和接口加密的功能上,比如 $salt = substr(uniqid(rand()), -6);//截取倒数6位$p ...
- How to skip all the wizard pages and go directly to the installation process?
https://stackoverflow.com/questions/22183811/how-to-skip-all-the-wizard-pages-and-go-directly-to-the ...
- js 运动函数篇(二) (加速度运动、弹性运动、重力场运动(多方向+碰撞检测+重力加速度+能量损失运动)拖拽运动)层层深入
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写加速度运动.弹性运动.重力场运 ...
- 蚂蚁金服合作的RISE实验室到底有多牛?
近日,蚂蚁金服与美国加州伯克利大学近期新成立的RISE实验室达成合作意向.RISE实验室的前身是著名伯克利AMP实验室,主导研发了当今大数据计算领域最前沿的开源系统:Apache Spark.Apac ...
- 关于Python的JSON
1.json模块load/loads.dump/dumps区别:(摘自这里) 实际上json就是python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,python ...
- Geomesa-Hbase集群部署
本文记录一下Geomesa-Hbase集群部署,在单机部署的基础上 https://www.cnblogs.com/help-silence/p/12817447.html 1.搭建集群 https: ...
- java的基础知识01
来自<head first java>书籍的摘录
- SVN 应用
1.从服务器上down 资料 在电脑上安装SVN客户端 在电脑本地创建个文件夹作为版本库 进入 xfssvn 文件夹右击鼠标选择 SVN Checkout 或 SVN Update 输入服务器中配置好 ...
- Python监控文件夹 && 发送邮件
直接上代码: # python3 # -*- coding: utf-8 -*- # 2017/06/16 by luohan from email.mime.text import MIMEText ...