[bzoj1070]修车

虽然知道是费用流。。然而依旧不会做。。Orz

http://hzwer.com/2877.html Orzhzwer

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <cstdio>
 6 #include <queue>
 7 
 8 using namespace std;
 9 
10 const int N=200000;
11 int h[N],r[N],to[N],from[N],cost[N],flow[N],tot,S,T,v[N],d[N],pre[N];
12 queue<int>q;
13 
14 void ins2(int u,int v,int f,int c){
15     to[tot]=v;
16     from[tot]=u;
17     flow[tot]=f;
18     cost[tot]=c;
19     r[tot]=h[u];
20     h[u]=tot++;
21 }
22 
23 void ins(int u,int v,int f,int c){
24     ins2(u,v,f,c);
25     ins2(v,u,0,-c);
26 }
27 
28 bool SPFA(){
29     memset(pre,-1,sizeof(pre));
30     memset(d,0x3f,sizeof(d));
31     d[S]=0;
32     v[S]=1;
33     q.push(S);
34     while(q.size()){
35         int f=q.front();q.pop();v[f]=0;
36         for(int i=h[f];i!=-1;i=r[i]){
37             int t=to[i];
38             if(flow[i]&&d[t]>d[f]+cost[i]){
39                 d[t]=d[f]+cost[i];
40                 pre[t]=i;
41                 if(!v[t])v[t]=1,q.push(t);
42             }
43         }
44     }
45     return d[T]!=0x3f3f3f3f;
46 }
47 
48 int mcf(){
49     int c=0,f;
50     while(SPFA()){
51         f=0x3f3f3f3f;
52         for(int i=pre[T];i!=-1;i=pre[from[i]]){
53             f=min(f,flow[i]);
54         }
55         for(int i=pre[T];i!=-1;i=pre[from[i]]){
56             flow[i]-=f;
57             flow[i^1]+=f;
58         }
59         c+=f*d[T];
60     }
61     return c;
62 }
63 
64 int m,n,ASD[100][100];
65 
66 int main(){
67     memset(h,-1,sizeof(h));
68     scanf("%d%d",&m,&n);
69     for(int i=1;i<=n;i++){
70         for(int j=1;j<=m;j++){
71             scanf("%d",&ASD[i][j]);
72         }
73     }
74     S=0,T=1100;
75     for(int i=1;i<=m*n;i++)ins(S,i,1,0);
76     for(int i=m*n+1;i<=m*n+n;i++)ins(i,T,1,0);
77     for(int i=1;i<=m;i++)
78         for(int j=1;j<=n;j++)
79             for(int k=1;k<=n;k++)
80                 ins((i-1)*n+j,n*m+k,1,ASD[k][i]*j);
81     printf("%.2lf\n",(double)mcf()/n);
82 }
View Code

 

posted @ 2017-01-23 10:32  KingSann  阅读(87)  评论(0)    收藏  举报