Has Not Appeared
0/6

# Shortest Paths with Negative Edge Weights

Authors: Benjamin Qi, Andi Qu, Dong Liu

Returning to Bellman-Ford and Floyd-Warshall.

## Bellman-Ford

Resources
cp-algo
cp-algo

with Bellman-Ford

CP2

### Shortest Paths

Focus Problem – read through this problem before continuing!

### This section is not complete.

Any help would be appreciated! Just submit a Pull Request on Github.

### Finding Negative Cycles

Focus Problem – read through this problem before continuing!

#### Solution

As mentioned in cp-algorithms, we relax the edges N times. If we perform an update on the $N$th iteration, there is an negative cycle.

C++

#include <bits/stdc++.h>using namespace std;using ll = long long;
struct edge {	int from, to; ll weight;};
const int MAXN = 2505;


### Simple Linear Programming

You can also use shortest path algorithms to solve the following problem (a very simple linear program).

Given variables $x_1,x_2,\ldots,x_N$ with constraints in the form $x_i-x_j\ge c$, compute a feasible solution.

#### Resources

Resources
MIT

Linear Programming Trick

#### Problems

Timeline (USACO Camp):

• equivalent to Timeline (Gold) except $N,C\le 5000$ and negative values of $x$ are possible.
StatusSourceProblem NameDifficultyTags
RMINormal

## Floyd-Warshall

Focus Problem – read through this problem before continuing!

### Solution - APSP

C++

const int MOD = 1000000007;const ll INF = 1e18;
void solve() {	F0R(i,n) F0R(j,n) dist[i][j] = INF, bad[i][j] = 0;	F0R(i,n) dist[i][i] = 0;	F0R(i,m) {

### Problems

StatusSourceProblem NameDifficultyTags
APIOHard
Show TagsAPSP, Binary Search

## Modified Dijkstra

The Dijkstra code presented earlier will still give correct results if there are no negative cycles. However, the same running time bound no longer applies, as demonstrated by subtasks 1-6 of the following problem.

StatusSourceProblem NameDifficultyTags
APIOHard
Show TagsOutput Only, SP

This problem forces you to analyze the inner workings of the three shortest-path algorithms we presented here. It also teaches you about how problemsetters could create hack cases!

### Join the USACO Forum!

Stuck on a problem, or don't understand a module? Join the USACO Forum and get help from other competitive programmers!