相比dij,spfa优点是可处理含负边不含负圈的最短路问题,缺点是算法复杂度不太好【貌似可以使用两种优化。LLL和SLF】

差分约束就是将一些不等式转化为图中的带权边,然后求解最短路或最长路的方法

洛谷P1645https://www.luogu.org/problemnew/show/P1645

 #include<bits/stdc++.h>
using namespace std;
struct pot{
int to;
int next;
int len;
}edge[];
queue<int>pq;
int vis[];
int next[];
int dist[];
void add(int x,int y,int z,int t){
edge[t].len=z;
edge[t].next=next[x];
edge[t].to=y;
next[x]=t;
}
void spfa(int x)
{
while(!pq.empty())pq.pop();
dist[x]=;
vis[x]=true;
pq.push(x);
while(!pq.empty()){
int u=pq.front();
pq.pop();
vis[u]=false;
for(int i = next[u]; i != - ; i=edge[i].next)
{
int w=edge[i].to;
if(dist[w]<dist[u]+edge[i].len)
{
dist[w]=dist[u]+edge[i].len;
if(!vis[w]){
vis[w]=true;
pq.push(w);
}
}
}
}
}
int main()
{
int n;
scanf("%d",&n);
int tot=;
int mmax=;
int mmin=;
memset(dist,-,sizeof(dist));
memset(next,-,sizeof(next));
memset(vis,,sizeof(vis));
for(int i = ; i < n ; i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
add(a-,b,c,tot);
if(a<mmin)mmin=a;
if(mmax<b)mmax=b;
tot++;
}
for(int i = mmin ; i <= mmax ; i++)
{
add(i-,i,,tot);
tot++;
add(i,i-,-,tot);
tot++;
}
spfa(mmin-);
cout << dist[mmax]<<endl;
return ;
}

差分约束+spfa【模板】的更多相关文章

  1. 【poj3169】【差分约束+spfa】

    题目链接http://poj.org/problem?id=3169 题目大意: 一些牛按序号排成一条直线. 有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没 ...

  2. O - Layout(差分约束 + spfa)

    O - Layout(差分约束 + spfa) Like everyone else, cows like to stand close to their friends when queuing f ...

  3. P5960 差分约束算法模板

    差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...

  4. poj3159 差分约束 spfa

    //Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...

  5. 【BZOJ】2330: [SCOI2011]糖果(差分约束+spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束运用了最短路中的三角形不等式,即d[v]<=d[u]+w(u, v),当然,最长 ...

  6. (简单) POJ 3169 Layout,差分约束+SPFA。

    Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...

  7. poj Layout 差分约束+SPFA

    题目链接:http://poj.org/problem?id=3169 很好的差分约束入门题目,自己刚看时学呢 代码: #include<iostream> #include<cst ...

  8. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...

  9. POJ-3159.Candies.(差分约束 + Spfa)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 40407   Accepted: 11367 Descri ...

随机推荐

  1. Ubuntu 14.04 的 VNC Server

    首先,如果是Desktop 版本的 Ubuntu,不需要另外安装vnc server. 网上也不知怎么搞的,一堆奇怪的方法,要安装TightVNCServer,然后一堆sb设置 然后,主要有两个配置 ...

  2. Linux下安装Phantomjs

    1. 安装linux系统的软件包 先来看一下官方网站的提示: Note: For this static build, the binary is self-contained. There is n ...

  3. Html之a标签的使用

    使用 <a> 标签的方式: <a href="http://www.baidu.com">用戶协议s</a><br> <a h ...

  4. POJ-3259 Wormholes(判断负环、模板)

    Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...

  5. OAF多语言的实现

    在之前的文章中转载了一篇关于多语言实现的文章. OAF中多语言的实现(转) 现在我来讲讲另外一种情况. 在建立工程项目没有特别选择语言,所以所有的PG或RN页面都是英文的,在页面原文件中可看到如下内容 ...

  6. Eclipse偏好设置的导入与导出

    偏好导入:File--->Import

  7. Oracle Rman 增量备份与差异备份

    一.增量与差异 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以此类推. Oracle 10g官方文档明确指出增量 ...

  8. mybatis 传递多个值的解决办法

    参考链接:http://www.2cto.com/database/201409/338155.html. 其中三种方案是正确的,有些例子的细节是错的,但是无关紧要

  9. The "Double-Checked Locking is Broken" Declaration

    双重检查锁定在延迟初始化的单例模式中见得比较多(单例模式实现方式很多,这里为说明双重检查锁定问题,只选取这一种方式),先来看一个版本: public class Singleton { private ...

  10. 【DevExpress v17.2新功能预告】DevExtreme ASP.NET MVC新的强类型HTML Helpers

    在ASP.NET MVC中构建视图时,强类型HTML helpers非常有用.像@Html.TextBoxFor(m => m.FirstName)这样内置的Helper方法已经存在很长时间了, ...