POJ1459多源點網路流入門(ISAP)

2021-09-11 00:20:23 字數 1931 閱讀 2241

題意: 

簡單的說下題意(按輸入輸出來講,前面的描述一堆的rubbish,還用來誤導人),給你n個點,其中有np個是能提供電力的點,nc個是能消費電力的點,剩下的點(n-np-nc)是中轉戰即不提供電力也不消費電力,點與點之間是有線路存在的,有m條線路,每條線路有最多運載限定。 

前4個資料就是有n個點,np個供電點,nc個消費點,m條線路,接來題目先給出的是m條線路的資料,(起點,終點)最多運載量,然後是np個供電點的資料(供電點)最多供電量,接著就是nc個消費點的資料(消費點)最多消費電量。 

題目要我們求出給定的圖最大能消費的總電量(就是求最大流)

分析增加乙個超級源點,和超級匯點。。把所給的發電站都和超級源點相連,把所給的消耗戰都和超級匯點相連

然後需要注意的地方就是輸入的地方有點坑,大家注意一下輸入的地方就可以了

下面的是我用isap做的,正好剛入門網路流,也正好學到isap,小試一下qaq

#include#include#include#include#include#include#includeusing namespace std;

const int max_nodes=4e4;

const int inf=0x3f3f3f3f;

#define rep(i,a,b) for(int i=a;i<=b;i++)

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

typedef long long ll;

struct node

;vectorg[max_nodes];

vectoredges;

vector::iterator it;

int num_nodes;

int source; // 源點

int sink; // 匯點

int p[max_nodes]; // 可增廣路上的上一條弧的編號

int num[max_nodes]; // 和 t 的最短距離等於 i 的節點數量

int cur[max_nodes]; // 當前弧下標

int d[max_nodes]; // 殘量網路中節點 i 到匯點 t 的最短距離

bool vis[max_nodes];

typedef vector::iterator iterator_t ;

void add(int u,int v,int w));

edges.push_back((node));

int k=edges.size();

g[u].push_back(k-2);

g[v].push_back(k-1);

}void bfs()}}

}int augment()

u=sink;

while(u!=source)

return df;

}int max_flow()

}if(!flag)

if(--num[d[u]]==0) break;

num[d[u]=m+1]++;

cur[u]=0;

if(u!=source)

u=edges[p[u]].from;}}

return ans;

}int main()

while(np--)

while(nc--)

sink=n+1;

num_nodes=n+2;

source=0;

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

for(int i=0;i<=num_nodes;i++)

g[i].clear();

edges.clear();

}return 0;

}

emmmmm,這個當做模板也是可以的

poj1459 多源點網路流

題意 有n個點,np個供電點,nc個消費點,m條線路,接來題目先給出的是m條帶權路徑,然後是np個供電點和權值,接著就是nc個消費點和權值。題目要我們求出給定的圖最大能消費的總電量 就是求最大流 思路 建乙個超級源點,乙個超級匯點。超級源點連線所以供電站,所以消費點連線超級匯點。跑一遍網路流即可。i...

POJ1459 多源點多匯點的網路流

多源點多匯點的網路流其實處理方法很簡單.給所有源點加乙個超級源點.給所有匯點加乙個超級匯點.然後赤果果的最大流.poj1459 多源點多匯點最大流.dinic模板題.includeusing namespace std const int oo 2000000000 int n,np,nc,m,ne...

poj1459多源點多匯點最大流

題意 有許多發電廠,需求電的地方 就說耗電場吧 和一些中轉站,要求出各個耗電場耗電之和,並使之最大。其中邊上的權值為能流通的最大電量。題目解析 這道題目也是很簡單的最大流題目,只需要新增乙個總的源點和乙個總的匯點,然後從總源點到子源點邊上的權值為子源點的發電量,從匯點到總匯點邊上的權值為子匯點的需求...