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. sql注入 pikachu

    闭合条件的探测 数字型注入 burp抓包 分别测试 id=1 and 1=1和id=1 or 1=1 存在漏洞 字符型注入 ' 报错 探测闭合条件 ' order by 1# 未报错.构成闭合 同上有 ...

  2. python学习03字符串基本操作

    '''字符串可以用单引号,双引号,三引号表示 '''#1.读取str1='I am a student!'#每一个字符对应一个下标,可以利用下标的方式来读取字符串对应的值——索引print(str1[ ...

  3. zabbix 微信告警机制

    微信告警首先得注册一个企业微信,然后才能实现微信告警.自行百度 微信: 添加一个用户到上面创建的部门里面 创建完成记住 AgentID  和 Secret 下一步:记住企业 ID 1)编辑zabbix ...

  4. Memcached在企业中的应用

    Memcached简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitz ...

  5. eclipse自动补全导致变量会跟上String后缀的问题解决

    https://blog.csdn.net/feinifi/article/details/103665860

  6. java中wait和sleep的区别

    文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...

  7. CSAPP Chapter 8:Exception Control Flow

    prcesssor在运行时,假设program counter的值为a0, a1, ... , an-1,每个ak表示相对应的instruction的地址.从ak到ak+1的变化被称为control ...

  8. 使用3种协议搭建本地yum仓库

    关闭防火墙和selinux [root@qls yum.repos.d]# systemctl stop firewalld (stop,start,disable,enable) [root@qls ...

  9. CSS开发技巧(四):解决flex多行布局的行间距异常、子元素高度拉伸问题

    在使用flex布局时,若出现换行,有两种较为特殊的现象是值得我们研究的: 子元素高度被拉伸,其实际高度大于它的内容高度. 各行子元素之间的行间距过大,甚至我们根本没有给子元素设置margin. 现在我 ...

  10. Netty(二):数据在ChannelPipeline中的流经

    本文目的:测试数据在ChannelPipeline中的流经顺序及状态. 先看本文的测试代码: AdditionalInBoundHandler:入站处理器,不做任何处理,只是在响应读事件时打印用来观察 ...