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. udp包最大数据长度是多少

    因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535    udp包头占8字节, ip包头占20字节, 65535-28 = 65507 ...

  2. Git 简明手册

    0,Git 是什么 Git 是一个VCS(Version Control System),即版本控制系统. 版本控制系统从字面意思来看,它的用途就是管理/控制文件的版本.使用它,可以方便的知道一个文件 ...

  3. java中使用Semaphore构建阻塞对象池

    java中使用Semaphore构建阻塞对象池 Semaphore是java 5中引入的概念,叫做计数信号量.主要用来控制同时访问某个特定资源的访问数量或者执行某个操作的数量. Semaphore中定 ...

  4. 徐州I

    #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...

  5. 【Linux常见问题】CentOS 6 root用户密码忘记,找回密码方法

    1.Linux的root密码修改不像Windows的密码修改找回,Windows的登录密码忘记需要介入工具进行解决.CentOS6和CentOS7的密码方法也是不一样的,具体如下: 2.centos ...

  6. 解析HTML、JS与PHP之间的数据传输

    在电商网站搭建过程中,前端经常会向后端请求数据,有时候通过HTML.JS和PHP文件的处理来实现数据的连通.通常情况下,用户在HTML中做关键字操作,JS对提交的表单进行数据处理,向后端发起ajax请 ...

  7. HDU - 1253 胜利大逃亡 (搜索)

    Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...

  8. Cypress 自动化环境搭建

    1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机 exe 文件打开 Ps:直接打开 exe 是会报错找不到 json文件的,所以还要安装依赖环境 运行 cypress 项目前, ...

  9. RF(ride 工具使用)

    1.新建项目 project,工程 suite,用例 testcase 新建 project:file -> new project,输入工程名,Type 选择 directory,选择工程存放 ...

  10. SaltStack漏洞导致的挖矿排查思路

    描述 SaltStack是一套C/S架构的运维工具,服务端口默认为4505/4506,两个端口如果对外网开放危害非常大,黑客利用SaltStack的远程命令执行漏洞CVE-2020-11651可以直接 ...