相比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. Linux后台日志定时清理脚本

    一. 简介 linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否 ...

  2. 『TensotFlow』RNN/LSTM古诗生成

    往期RNN相关工程实践文章 『TensotFlow』基础RNN网络分类问题 『TensotFlow』RNN中文文本_上 『TensotFlow』基础RNN网络回归问题 『TensotFlow』RNN中 ...

  3. hdu5730 分治fft

    题意:\(dp[n]=\sum_{i=1}^ndp[i]*a[n-i]+a[n]\),求dp[n], 题解:分治fft裸题,就是用cdq分治加速fft,因为后面的需要用到前面的dp来算,不可能每次都f ...

  4. 使用python创建mxnet操作符(网络层)

    对cuda了解不多,所以使用python创建新的操作层是个不错的选择,当然这个性能不如cuda编写的代码. 在MXNET源码的example/numpy-ops/下有官方提供的使用python编写新操 ...

  5. hdu-1850-nim

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  6. WinForm下的TabControl控件

    一.TabControl控件介绍 TabControl实现的具体效果: 在实际工作中,我是这么用TabControl控件,实现切换页面效果.比如要实现某个界面进行操作,然后还要查看一下日志,就可以使用 ...

  7. 信号处理signal、sigaction、pause、信号嵌套处理、不可重入函数

    信号的捕捉和处理 主要由signal和sigaction函数来完成.还有一个函数pause,它可用来响应任何信号,不过不做任何处理. 1.signal函数 typedef void (*sighand ...

  8. 线程的创建,pthread_create,pthread_self,pthread_once

    typedef unsigned long int pthread_t; //come from /usr/include/bits/pthreadtypes.h int pthread_create ...

  9. oracle增加表空间

    select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; select ta ...

  10. (C#基础) ref 和out练习

    对于C#中这两个关键字的用法,常常混淆,有点不清楚,今天又一次看到.遂把它们都记录下来,希望能有所用.这些都是他人写的,我只是搬过来一次,加深印象. 代码 using System; using Sy ...