首页 > 代码库 > poj Optimal Milking

poj Optimal Milking

                                                    Optimal Milking

 

题目:

   有K个机器,C只牛。要求求出最所有牛到各个产奶机的最短距离。给出一个C+K的矩阵,表示各种标号间的距离。

而每个地方最多有M只牛。

 

算法分析:

   二分+最短路+网络流

想法难以想到。我是看解题报告的思路。然后,自己上了手。开始wrong 了3次。后来各种该,无意的一个更改就AC了。无语勒。。。。

wrong 在了,网络流建图的时候只能是机器和奶牛之间的距离关系。而奶牛跟奶牛或者机器跟机器不要建边。当时脑残了!!!!

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

const int INF = 1 << 20;
const int MAXN = 1000;

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;
int dist[MAXN][MAXN];
int K,C,M,V;

void init(){
    src = http://www.mamicode.com/V + 1; sink = src + 1;>


 

还有一种是多重匹配,,还没写。写完补上。

poj Optimal Milking