Holy Grail

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的更多相关文章

  1. ACM/ICPC 之 最短路径-Bellman Ford范例(POJ1556-POJ2240)

    两道Bellman Ford解最短路的范例,Bellman Ford只是一种最短路的方法,两道都可以用dijkstra, SPFA做. Bellman Ford解法是将每条边遍历一次,遍历一次所有边可 ...

  2. poj1860 bellman—ford队列优化 Currency Exchange

    Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22123   Accepted: 799 ...

  3. 蓝桥杯 algo_5 最短路 (bellman,SPFA)

    问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式 第一行两个整数n, m. 接下来的m行,每行有三个 ...

  4. uva 558 - Wormholes(Bellman Ford判断负环)

    题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...

  5. Flex: Holy Grail

    Flex:Holy Grail <html> <head> <style type="text/css"> body,div,header,ma ...

  6. 【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏

    1.圣杯布局(Holy Grail Layout) 其指的是一种最常见的网站布局.页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer).其中躯干又水平分成三栏,从左 ...

  7. Bellman—Ford算法思想

    ---恢复内容开始--- Bellman—Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题.对于给定的带权(有向或无向)图G=(V,E),其源点为s,加权函数w是边集E的映射.对图G ...

  8. Bellman - Ford 算法解决最短路径问题

    Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...

  9. Holy Grail【spfa求最短路】

    题目链接:https://www.jisuanke.com/contest/3004?view=challenges 题目大意: 1.一个无向图,给出六个顶点,添六条边,但是添边是有限制的.每次添边的 ...

随机推荐

  1. MySQL的远程链接

    安装好我们的mMySQL,是不是也有种无从下手的感觉,不用怕,接下来我们可以使用远程连接来可视化我们的数据库的数据: 1. 打开我们的数据库,帐号是root,密码查看文件就行了 2.使用命令: mys ...

  2. Python执行Linux cmd命令,获取输出的一种方法,输出是bytes

    import subprocess p = subprocess.Popen('df -lh', stdout=subprocess.PIPE, shell=True) print(p.stdout. ...

  3. VirtualBox 原始镜像转换成 vdi 镜像

    VBoxManage convertdd [-static] <filename> <outputfile> 将raw硬盘转换成vdi虚拟硬盘

  4. [Windows] Diskpart Scripts and Examples

    https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskpart-scripts-and ...

  5. linux sort 命令实用手册

    Linux 中的sort 命令是一个很实用的工具,用于对文本内容以行为单位进行ASCII 码排序,默认按照升序进行排序(当然也可以按照降序). sort 命令的格式如下: sort `参数` `文件名 ...

  6. numpy库的学习笔记

    一.ndarray 1.numpy 库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”. 2.ndarray是一个多维数组的对象,ndarray数组一般要求所有元素类型相 ...

  7. bootstrap-导航(垂直分组)

    1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8 ...

  8. Codeforce 1102 C. Doors Breaking and Repairing

    Descirbe You are policeman and you are playing a game with Slavik. The game is turn-based and each t ...

  9. DP 60题 -3 HDU1058 Humble Numbers DP求状态数的老祖宗题目

    Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  10. python(json 模块)

    1.Json 定义 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.JSON 的数据格式其实就是 python 里面的字典格式,里 ...