poj 3068 有流量限制的最小費用網路流

2021-07-04 14:59:44 字數 2180 閱讀 3522

題意:

m條有向邊連線了n個倉庫,每條邊都有一定費用。

將兩種危險品從0運到n-1,除了起點和終點外,危險品不能放在一起,也不能走相同的路徑。

求最小的費用是多少。

解析:抽象出乙個源點s乙個匯點t,源點與0相連,費用為0,容量為2。

匯點與n - 1相連,費用為0,容量為2。

每條邊之間也相連,費用為每條邊的費用,容量為1。

建圖完畢之後,求一條流量為2的最小費用流就行了。

**:

#pragma comment(linker, "/stack:1677721600")

#include #include #include #include #include #include #include #include #include #include #include #include #include #define pb push_back

#define mp make_pair

#define ll long long

#define lson lo,mi,rt<<1

#define rson mi+1,hi,rt<<1|1

#define min(a,b) ((a)<(b)?(a):(b))

#define max(a,b) ((a)>(b)?(a):(b))

#define mem0(a) memset(a,0,sizeof(a))

#define mem1(a) memset(a,-1,sizeof(a))

#define mem(a,b) memset(a,b,sizeof(a))

#define fin freopen("in.txt", "r", stdin)

#define fout freopen("out.txt", "w", stdout)

using namespace std;

const int mod = 1e9 + 7;

const double eps = 1e-8;

const double ee = exp(1.0);

const int inf = 0x3f3f3f3f;

const int maxn = 100 + 10;

const double pi = acos(-1.0);

const ll iinf = 0x3f3f3f3f3f3f3f3f;

//firs - 最短距離 second 頂點編號

typedef pairp;

struct edge

edge(int _to, int _cap, int _cost, int _rev)

};int v;//頂點數

vectorg[maxn]; //圖的鄰接表

int h[maxn]; //殘量

int dist[maxn]; //最短距離

int prev[maxn], pree[maxn]; //前驅節點 以及對於的邊

void init()

}//向圖中增加一條從fr到to容量為cap費用為cost的邊

void addedge(int fr, int to, int cap, int cost)

//求解從s到t流量為f的最小費用流

//沒有流量為f的流,返回-1

int mincostflow(int s, int t, int f)}}

if (dist[t] == inf)

for (int v = 0; v < v; v++)

h[v] += dist[v];

int d = f;

for (int v = t; v != s; v = prev[v])

f -= d;

res += d * h[t];

for (int v = t; v != s; v = prev[v])

}return res;

}int main()

int ans = mincostflow(s, t, 2);

printf("instance #%d: ", ca++);

if (ans == -1)

puts("not possible");

else

printf("%d\n", ans);

}return 0;

}

poj 2396 有上下界的網路流

題目大意 乙個mxn的矩陣,給出矩陣中每一行的和sh 1,2.m 以及每一列的數字的和目sv 1,2.n 以及矩陣中的一些元素的範圍限制,比如a 1 2 1,a 2 3 4,a 3 3 10等等,且要求矩陣中的每個元素值非負。求出,是否存在滿足所有給出的限制條件的矩陣,若存在輸出。題目分析 實現 c...

有上下界的流

acm模版 有上下界的最小 最大 流 init up為容量上界 low為容量下界 call mf limitflow n,src,sink flow為流量分配 另附 迴圈流問題 描述 無源無匯的網路n,設n是具有基礎有向圖d v,a 的網路.l和c分別為容量下界和容量上界.如果定義在a上的函式 f滿...

有上下界網路流

前言 下面寫得只是一些十分基礎的東西,是給我以後自己看的,想要徹底弄明白這個內容,推薦去看liu runda。注 為了方便,下面所有的 x,y,l,r 都表示一條從x連向y,流量下界為l,流量上界為r的邊。問題簡述 給出乙個有向圖,每條邊有流量上下界,沒有源點和匯點,要求找到一種流的方法,使得每個點...