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. PHP 构造方法 __construct()

    PHP 构造方法 __construct() PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一 ...

  2. 深入理解PHP之数组(遍历顺序)

    作者: Laruence 本文地址: http://www.laruence.com/2009/08/23/1065.html 转载请注明出处 经常会有人问我, PHP的数组, 如果用foreach来 ...

  3. MarkDown排版测试

    1.标题设置 标题(大标题) 标题(小标题) 标题(一级标题) 标题( 二级标题) 标题(三级标题) 标题(四级标题) 备注:大标题与一级标题一样,小标题与二级标题一样,"#"前无 ...

  4. Nginx+Fastdfs

    注: 在配置时,使用非root用户配置 fdfs/fdfs 1.    集群部署 1.1.    准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs@5861be93b5b0 /]$mk ...

  5. Python(3)

    使用除法来缩减数字,使用余数法来计算个数. class Solution: def hammingWeight(self, n: int) -> int: count = 0 while Tru ...

  6. udp协议与tcp协议

    TCP协议与UDP协议支持的应用协议 TCP支持的应用协议主要有:Telnet.FTP.SMTP等: UDP支持的应用层协议主要有:NFS(网络文件系统).SNMP(简单网络管理协议).DNS(主域名 ...

  7. Windows API 中 OVERLAPPED 结构体 初始化

    出处:https://github.com/microsoft/Windows-classic-samples/blob/1d363ff4bd17d8e20415b92e2ee989d615cc0d9 ...

  8. 如何用hugo 搭建博客

    1,Hugo 简介 搭建个人博客有很多开源的博客框架,我们要介绍的框架叫作Hugo.Hugo 是一个基于Go 语言的框架,可以快速方便的创建自己的博客. Hugo 支持Markdown 语法,我们可以 ...

  9. swift 3.0字符串的简单使用

    let str:String = "12314124" 获取某个指定位置的元素 print(str.characters[str.index(str.startIndex, off ...

  10. 《Exchange Server 2010 SP1/SP2管理实践》——第2章 搭建Exchange实验环境2.1 网络环境规划...

    本节书摘来自异步社区<Exchange Server 2010 SP1/SP2管理实践>一书中的第2章,第2.1节,作者: 王淑江 更多章节内容可以访问云栖社区"异步社区&quo ...