最小費用最大流模版

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>using namespace std;const int MAXN=10100;
const int MAXM=40010;
const int INF=0x3f3f3f3f;struct Edge      //cost代表單位流量流過該邊時,所需的費用大小
{int to,next,cap,flow,cost;
}edge[MAXM];int head[MAXN],tol;
int pre[MAXN],dis[MAXN];
bool vis[MAXN];
int N;void init(int n)    //N代表點的個數
{N=n;tol=0;memset(head,-1,sizeof(head));
}void addEdge(int u,int v,int cap,int cost)    
{edge[tol].to=v;edge[tol].cap=cap;edge[tol].cost=cost;edge[tol].flow=0;edge[tol].next=head[u];head[u]=tol++;edge[tol].to=u;edge[tol].cap=0;edge[tol].cost=-cost;edge[tol].flow=0;edge[tol].next=head[v];head[v]=tol++;
}bool spfa(int s,int t)    //計算最短路
{queue<int>q;for(int i=0;i<N;i++){dis[i]=INF;vis[i]=false;pre[i]=-1;}dis[s]=0;vis[s]=true;q.push(s);while(!q.empty()){int u=q.front();q.pop();vis[u]=false;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;if(edge[i].cap>edge[i].flow&&dis[v]>dis[u]+edge[i].cost){dis[v]=dis[u]+edge[i].cost;pre[v]=i;if(!vis[v]){vis[v]=true;q.push(v);}}}}if(pre[t]==-1)return false;elsereturn true;
}int minCostMaxflow(int s,int t,int &cost)    //s代表源點,t代表匯點,cost是最后的總費用,函數返回值是最大流量值,注意點的編號要求從0到N-1
{int flow=0;cost=0;while(spfa(s,t)){int Min=INF;for(int i=pre[t];i!=-1;i=pre[edge[i^1].to]){if(Min>edge[i].cap-edge[i].flow)Min=edge[i].cap-edge[i].flow;}for(int i=pre[t];i!=-1;i=pre[edge[i^1].to]){edge[i].flow += Min;edge[i^1].flow -= Min;cost += edge[i].cost*Min;}flow+=Min;}return flow;
}

?

轉載于:https://www.cnblogs.com/wsruning/p/5720761.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fpga中的slack_是否想減少部署過程的恐怖程度? 在Slack中構建ChatOps。

fpga中的slackby Rick Mak麥瑞克(Rick Mak) 是否想減少部署過程的恐怖程度&#xff1f; 在Slack中構建ChatOps。 (Want to make the deployment process less scary? Build ChatOps in Slack.) In a company that makes mobile and web products, developers shouldn’t be t…

位運算-查找數組中唯一成對的數

基礎實例一&#xff1a;使用位運算判斷數的奇偶性 實例代碼&#xff1a; public class Test {public static void main(String[] args) {System.out.println(isOdd(49));System.out.println(isOdd(50));}// 與運算public static boolean isOdd(int i){return (i & 1) ! 0;…

Docker實踐:Cannot connect to the Docker daemon.

Docker實踐&#xff1a;Cannot connect to the Docker daemon.查看docker daemon是否在運行 [rootlocalhost openec]# ps aux | grep dockerroot 3030 0.0 0.0 112656 984 pts/0 S 16:20 0:00 grep --colorauto docker啟動docker[rootlocalhost openec]# ser…

linux虛擬終端時間短,使用Screen創建虛擬終端避免Linux遠程斷線

維護Linux的ssh工具在使用中&#xff0c;一旦遇到網絡中斷&#xff0c;則當前的shell就會自動關閉當前的工作進度就會丟失&#xff0c;這對于遠程升級等比較耗費時間的工作是非常不利的對于遠程調適代碼也是很不可靠不安全的為此&#xff0c;可以使用screen這個工具來解決這個問…

中國第一軟件開發_我第一次開發企業軟件中學到的知識

中國第一軟件開發In this article, I’ll share ten lessons I learned from my first project as a self-taught software developer. I was working for a consulting company at the time, and my official title was Software Engineer. The project I worked on was a web…

react-native-Cocoapods-Swift-Project

https://reactnative.cn/docs/integration-with-existing-apps/ 1、創建一個xcode工程&#xff0c;single View就行&#xff0c;項目語言選擇swift&#xff0c;oc的直接生成就行不用這么麻煩。 2、把跟目錄上創建 node的package.json,執行命令 npm init npm install react-nati…

用shell或者python寫出各種圖形

首先是shell等邊三角形[roothxy my_script]# sh ff.sh num:6************************* *********** [roothxy my_script]# cat ff.sh #!/bin/bash ######################################################################### # File Name: ff.sh # Author: huxianyong # mai…

cfdiv2/c/找規律

題目連接 £&#xff1a;若n<4&#xff0c;NO&#xff1b; £&#xff1a;若n4,特判&#xff0c;n5&#xff0c;特判。 £&#xff1a;若n>6,用2-4組成24&#xff0c;1和5和6組成零&#xff0c;即可。 #include <set> #include <map> #includ…

linux lcd顯示流程,求助 armlinux中實現lcd顯示

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓/* for (bufIdx0; bufIdx < NUM_DISPLAY_BUFS-1; bufIdx) {fbp[bufIdx1] fbp[bufIdx] displaySize;}*/for(bufIdx0;bufIdx{buf(unsigned int *)fbp;for (i0; i < displaySize / sizeof(unsigned int); i) {buf[i] UYVY_BL…

android引入開源庫_為好目錄引入開源:通過代碼幫助公益組織

android引入開源庫by Michael D. Johnson邁克爾約翰遜(Michael D.Johnson) 為好目錄引入開源&#xff1a;通過代碼幫助公益組織 (Introducing the Open Source for Good Directory: Help Nonprofits with Code) A few months ago, we asked 20,000 people why they were learn…

第二階段站立會議08

站立會議內容&#xff1a; 大家準備繼續將代碼進行融合&#xff0c;進行測試對一些功能進行優化。 1、會議照片&#xff1a; 2、任務展板&#xff1a; 3、燃盡圖&#xff1a; 轉載于:https://www.cnblogs.com/smcoder/p/7002539.html

ionic view 視圖

ionic view 方法 $ionicView.loaded視圖已經被加載了。這事件只發生一次當視圖被創建并添加到Dom中。當跳出頁面并且被緩存了的話&#xff0c;再次訪問這個頁面時這個時間將不會被激活。Loaded事件是個好方式讓你為這個視圖設置你的代碼&#xff1b; 然而&#xff0c;他并不是…

ios開發 mvp實踐_實踐中開發人員的工作流程-我們如何在30天內建立??MVP

ios開發 mvp實踐by Lna Faure萊娜福雷(LnaFaure) 實踐中開發人員的工作流程-我們如何在30天內建立??MVP (The developer’s workflow in practice — how we built our MVP in 30 days) As a web developer, I often get to start projects from scratch and make decisions…

linux智能電壓表設計與實現,畢業論文 智能數字電壓表設計.doc

畢業論文畢業論文智能數字電壓表設計智能數字電壓表設計- PAGE I -摘要隨著微電子技術和計算機技術的迅速發展&#xff0c;特別是單片機的出現和發展&#xff0c;使傳統的電子測量儀器在原理、功能、精度及自動化水平等方面發生了巨大的變化&#xff0c;形成一種新一代的測量儀…

git——學習筆記(三)分支管理

一、創建、合并分支 每次提交&#xff0c;git都往后走一格&#xff0c;串成一跳時間線&#xff0c;head指向的是分支&#xff0c;分支指向提交。master是主分支&#xff0c;dev是另一條分支&#xff0c;分支就像指針一樣&#xff0c;合并、刪除分支時&#xff0c;修改的都是指針…

Redis 它是什么?它用來做什么?它的優勢與短板如何?

閱讀目的&#xff1a; 對什么是內存型數據庫有概念性的認知。?Redis 是什么&#xff1f; 通常而言目前的數據庫分類有幾種&#xff0c;包括 SQL/NSQL,&#xff0c;關系數據庫&#xff0c;鍵值數據庫等等 等&#xff0c;分類的標準也不以&#xff0c;Redis本質上也是一種鍵值…

阿里巴巴是如何打通 CMDB,實現就近訪問的?

CMDB在企業中&#xff0c;一般用于存放與機器設備、應用、服務等相關的元數據。當企業的機器及應用達到一定規模后就需要這樣一個系統來存儲和管理它們的元數據。有一些廣泛使用的屬性&#xff0c;例如機器的IP、主機名、機房、應用、region等&#xff0c;這些數據一般會在機器…

我們分析了成千上萬的編程訪談。 這就是我們學到的東西。

by Aline Lerner通過艾琳勒納(Aline Lerner) 我們分析了成千上萬的編程訪談。 這就是我們學到的東西。 (We analyzed thousands of coding interviews. Here’s what we learned.) Note: I wrote most of the words in this post, but the legendary Dave Holtz did the heavy…

Java 9 新功能之 HTTP2 和 REPL

對Java 9的炒作將不再局限于模塊化&#xff08;modularity&#xff09;&#xff0c;Java 9正在搜羅大量額外的功能模塊&#xff0c;這些功能模塊正作為Java增強提案&#xff08;JEP&#xff09;提交&#xff0c;并在OpenJDK (Java SE的參考實現項目&#xff09;中實現。 在這篇…

c語言編譯程序首要工作,c語言試卷

c語言試卷一、選擇題(每小題1分&#xff0c;共40分)。(以下A、B、C、D四個選項中只有一個是正確的。)1&#xff0e;一個C語言程序是由()。A&#xff0e;一個主程序和若干子程序組成B&#xff0e;函數C&#xff0e;若干過程組成D&#xff0e;若干子程序組成2&#xff0e;C語言源…