日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[网络流24题]太空飞行计划

發(fā)布時(shí)間:2024/8/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [网络流24题]太空飞行计划 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分析

最大權(quán)閉合子圖模板題

把實(shí)驗(yàn)獲得的收益看成正權(quán)點(diǎn),儀器費(fèi)用看成負(fù)權(quán)點(diǎn),每個(gè)實(shí)驗(yàn)向所需要的儀器連邊

跑最大權(quán)閉合子圖即可

詳見https://www.cnblogs.com/birchtree/p/10304793.html

代碼

#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<vector> #define maxn 110 #define maxm 10005 #define INF 0x7fffffff using namespace std; int n,m; int p[maxn]; int c[maxn]; struct edge{int from;int to;int next; }E[maxm<<1]; long long flow[maxm]; int head[maxn]; int sz=1; void add_edge(int u,int v,int w){ // printf("%d->%d %d\n",u,v,w);sz++;E[sz].from=u;E[sz].to=v;E[sz].next=head[u];head[u]=sz;flow[sz]=w; }int deep[maxn]; int bfs(int s,int t){queue<int>q;memset(deep,0,sizeof(deep));deep[s]=1;q.push(s);while(!q.empty()){int x=q.front();q.pop();for(int i=head[x];i;i=E[i].next){int y=E[i].to;if(flow[i]&&!deep[y]){deep[y]=deep[x]+1;q.push(y);if(y==t) return 1;} }}return 0; }long long dfs(int x,int t,long long minf){if(x==t) return minf;long long rest=minf,k;for(int i=head[x];i;i=E[i].next){int y=E[i].to;if(flow[i]&&deep[y]==deep[x]+1){k=dfs(y,t,min(rest,flow[i]));if(k==0) deep[y]=0;flow[i]-=k;flow[i^1]+=k;rest-=k;}}return minf-rest; }long long dinic(int s,int t){long long maxflow,nowflow;maxflow=0;while(bfs(s,t)){while(nowflow=dfs(s,t,INF)){maxflow+=nowflow;}}return maxflow; }vector<int>ans; int main(){int x;char ch;long long tot=0;scanf("%d %d",&m,&n);for(int i=1;i<=m;i++){scanf("%d",&p[i]);tot+=p[i];while(scanf("%d%c",&x,&ch)!=EOF){add_edge(i,x+m,INF);add_edge(x+m,i,0);if(ch=='\n'||ch=='\r') break;}}for(int i=1;i<=n;i++) scanf("%d",&c[i]);for(int i=1;i<=m;i++){add_edge(0,i,p[i]);add_edge(i,0,0);} for(int i=1;i<=n;i++){add_edge(i+m,m+n+1,c[i]);add_edge(m+n+1,i+m,0);}long long res=tot-dinic(0,m+n+1);for(int i=1;i<=m;i++){if(deep[i]!=0){ans.push_back(i);}}for(int i=0;i<ans.size();i++){printf("%d",ans[i]);if(i!=ans.size()-1) printf(" ");else printf("\n");}ans.clear();for(int i=m+1;i<=m+n;i++){if(deep[i]!=0){ans.push_back(i-m);}}for(int i=0;i<ans.size();i++){printf("%d",ans[i]);if(i!=ans.size()-1) printf(" ");else printf("\n");}printf("%lld\n",res); }

轉(zhuǎn)載于:https://www.cnblogs.com/birchtree/p/10430859.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的[网络流24题]太空飞行计划的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。