首页 > 代码库 > hdu Crazy Circuits

hdu Crazy Circuits

                                Crazy Circuits

 

题目:

   给出一个电路板,从+极出发到负极。现在给你电路板上的最小电流限制,要你在电流平衡的时候求得从正极出发的最小电流。

 

算法:

   很裸的有源汇最小流。安有源汇最大流做法后,先求出最大流。然后,通过添加 t-->s 容量INF,是其变成一个无源汇最小流问题,这样在跑一次最大流就是结果了。虽然没有严格证明是否正确,但是我用到现在,还没发现有错误的算法。

做题时in[]忘记清空了。找了半个小时!!!

 

/*

   //!!!!!!!!!!!!!!
   一定要注意清空初始化问题!!!!!!!!
   
*/

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;

const int INF = 1 << 25;
const int MAXN = 100 + 10;
///////////////////////////////////

struct Edge{
   int from,to,cap,flow,cost;
   Edge(){};
   Edge(int _from,int _to,int _cap,int _flow)
       :from(_from),to(_to),cap(_cap),flow(_flow){};
};
vector<Edge> edges;
vector<int> G[MAXN];
int cur[MAXN],d[MAXN];
bool vst[MAXN];
int src,sink,ss,tt;

////////////////////////////////////////////

int N,M;
int low[MAXN+MAXN],in[MAXN];

void init(){
   ss = N + 2; tt = ss + 1;
   src = http://www.mamicode.com/tt + 1; sink = src + 1;>


 

 

hdu Crazy Circuits