差分约束+spfa【模板】
相比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【模板】的更多相关文章
- 【poj3169】【差分约束+spfa】
题目链接http://poj.org/problem?id=3169 题目大意: 一些牛按序号排成一条直线. 有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没 ...
- O - Layout(差分约束 + spfa)
O - Layout(差分约束 + spfa) Like everyone else, cows like to stand close to their friends when queuing f ...
- P5960 差分约束算法模板
差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...
- poj3159 差分约束 spfa
//Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...
- 【BZOJ】2330: [SCOI2011]糖果(差分约束+spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束运用了最短路中的三角形不等式,即d[v]<=d[u]+w(u, v),当然,最长 ...
- (简单) POJ 3169 Layout,差分约束+SPFA。
Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...
- poj Layout 差分约束+SPFA
题目链接:http://poj.org/problem?id=3169 很好的差分约束入门题目,自己刚看时学呢 代码: #include<iostream> #include<cst ...
- BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)
BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...
- POJ-3159.Candies.(差分约束 + Spfa)
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 40407 Accepted: 11367 Descri ...
随机推荐
- Pyhon 日志管理 -- logging
Pyhon 日志管理 -- logging 一直觉得运行程序是能打印日志是一个神奇的事情,不懂日志产生的原理,后来听说Pyhton 有一个logging模块,So,要好好研究一下. 先贴出代码,看看她 ...
- 滑动窗口解决Substring Search Problem
2018-07-18 11:19:19 一.Minimum Window Substring 问题描述: 问题求解: public String minWindow(String s, String ...
- C# DataTable列名不区分大小写
一直很纠结的就是DataTable的列名如何才能规范,从Oracle取出的DataTable都是大写,最后尝试了一下,原来C#的DataTable列名并不区分大小写,具体例子如下: DataTable ...
- C#实现在应用程序间发送消息的方法示例
本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...
- 20170728xlVba简单的匹配
Sub MatchData() Dim i As Long, EndRow As Long, Key As String Dim Rng As Range Dim Dic As Object Set ...
- dubbo监控报错Error creating bean with name 'uriBrokerService'
在jdk1.8下面会出现此错误 解决方法: 1.更换服务器jdk版本.(会影响其他项目环境) 2.修改dubbo-admin tomcat默认jdk版本. 3.修改dubbo-admin项目依赖(de ...
- Mashmokh and ACM CodeForces - 414D (贪心)
大意: 给定n结点树, 有k桶水, p块钱, 初始可以任选不超过k个点(不能选根结点), 在每个点放一桶水, 然后开始游戏. 游戏每一轮开始时, 可以任选若干个节点关闭, 花费为关闭结点储存水的数量和 ...
- layui图片显示
有些东西看文档可以实现,但当真不如自己写的实在.所以还是记录下来吧. 1. 图片赋值 <div id="layer-photos-demo" class="laye ...
- TCP和UDP最完整的区别
TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少: 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性 ...
- zzuli1731 矩阵(容斥)
1731: 矩阵 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 600 Solved: 106 SubmitStatusWeb Board Descr ...