太原网站建设推广注册建设网站的公司网站
太原网站建设推广,注册建设网站的公司网站,邀约网站怎么做请柬,全网平台整合营销推广这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 1 #includebits/stdc.h2 using namespace std;3 const int N50,M110,NN100010,oo1e9;4 int n,m,cost[N][M],tot,s,t,p[N],rank[NN],c[NN…这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 1 #includebits/stdc.h2 using namespace std;3 const int N50,M110,NN100010,oo1e9;4 int n,m,cost[N][M],tot,s,t,p[N],rank[NN],c[NN];5 bool isend[NN];6 struct Edge{7 int from,to,flow,cap,w;8 };9 int edge_tot;
10 vectorEdgeedge;
11 vectorintpoint[NN];
12 void add_edge(int f,int t,int cc,int ww){
13 edge.push_back((Edge){f,t,0,cc,ww});
14 point[f].push_back(edge_tot);
15 edge.push_back((Edge){t,f,0,0,-ww});
16 point[t].push_back(edge_tot);
17 return;
18 }
19 int dis[NN],pre[NN];
20 bool inq[NN];
21 bool spfa(){
22 queueintq;
23 int x;
24 for(int i1;itot;i) dis[i]oo;
25 q.push(s);
26 dis[s]0,inq[s]1;
27 while(!q.empty()){
28 xq.front();q.pop();
29 inq[x]0;
30 for(int i0;ipoint[x].size();i){
31 Edge eedge[point[x][i]];
32 if(e.cape.flow) continue;
33 if(dis[x]e.wdis[e.to]){
34 dis[e.to]dis[x]e.w,pre[e.to]point[x][i];
35 if(!inq[e.to]){inq[e.to]1;q.push(e.to);}
36 }
37 }
38 }
39 return dis[t]oo;
40 }
41 int mincostmaxflow(){
42 int ans0,f,now;
43 while(spfa()){
44 foo,nowt;
45 while(now!s){
46 fmin(f,edge[pre[now]].cap-edge[pre[now]].flow);
47 if(isend[now]){
48 isend[now]0,isend[tot]1,rank[tot]rank[now]1,c[tot]c[now];
49 add_edge(tot,t,1,0);
50 for(int i3;in2;i) add_edge(i,tot,1,rank[tot]*cost[i-2][c[tot]]);
51 }
52 nowedge[pre[now]].from;
53 }
54 ansdis[t]*f,nowt;
55 while(now!s){
56 edge[pre[now]].flowf,edge[pre[now]^1].flow-f;
57 nowedge[pre[now]].from;
58 }
59 }
60 return ans;
61 }
62 int main(){
63 scanf(%d%d,n,m);
64 for(int i1;in;i) scanf(%d,p[i]);
65 for(int i1;in;i)
66 for(int j1;jm;j)scanf(%d,cost[i][j]);
67 stot,ttot;
68 for(int i1;in;i) add_edge(s,tot,p[i],0);
69 for(int i1;im;i){
70 add_edge(tot,t,1,0);
71 rank[tot]1,c[tot]i,isend[tot]1;
72 for(int j3;jn2;j) add_edge(j,in2,1,cost[j-2][i]);
73 }
74 int ansmincostmaxflow();
75 printf(%d,ans);
76 } 转载于:https://www.cnblogs.com/mycups/p/8528851.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91313.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!