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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zoj2930

發布時間:2025/7/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zoj2930 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

各點向S連推遲的花費,向T連提前的花費,S表示提前,T表示推遲。a推遲b也推遲b往a連INF。最小割后從各點出發,能直接或間接到T的就是必須推遲的,剩下的就是能提前的。

#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <iomanip> #include <cstring> #include <map> #include <queue> #include <set> #include <cassert> #include <stack> #include <bitset> #define mkp make_pair using namespace std; const double EPS=1e-12; typedef long long lon; const lon SZ=210,SSZ=210,APB=10000,one=1,INF=0x7FFFFFFF,mod=1000000007; int n,m,S=207,T=208,mp[SZ][SZ]; int dep[SZ];void init() {for(int i=1;i<=n;++i){int tmp;cin>>tmp;mp[i][T]=tmp;}for(int i=1;i<=n;++i){int tmp;cin>>tmp;mp[S][i]=tmp;}cin>>m;for(int i=1;i<=m;++i){int a,b;cin>>a>>b;mp[b][a]=INF;} }bool bfs() {memset(dep,0,sizeof(dep));dep[S]=1;queue<int> q;q.push(S);for(;q.size();){int fr=q.front();q.pop();for(int i=1;i<=T;++i){if(!dep[i]&&mp[fr][i]){dep[i]=dep[fr]+1;q.push(i);if(i==T)return 1;}}}return 0; }int dinic(int x,int flow) {if(x==T)return flow;else{int rem=flow;for(int i=1;i<=T&&rem;++i){if(dep[i]==dep[x]+1&&mp[x][i]){int tmp=dinic(i,min(rem,mp[x][i]));if(!tmp)dep[i]=0;rem-=tmp;mp[x][i]-=tmp,mp[i][x]+=tmp;}}return flow-rem;} }bool vst[SZ];void work() {int res=0,ans=0;for(;bfs();)res+=dinic(S,INF);queue<int> q;for(int i=1;i<=n;++i){if(mp[i][T]){vst[i]=1;q.push(i);}}for(;q.size();){int fr=q.front();q.pop();for(int i=1;i<=n;++i){if(mp[i][fr]&&!vst[i]){vst[i]=1;q.push(i);}}}for(int i=1;i<=n;++i)if(vst[i])++ans;cout<<res<<" "<<n-ans<<endl; }void release() {memset(mp,0,sizeof(mp));memset(vst,0,sizeof(vst)); }int main() {std::ios::sync_with_stdio(0);//freopen("d:\\1.txt","r",stdin);//cout<<(1<<31)<<endl;int casenum;//cin>>casenum;//cout<<casenum<<endl;//for(int time=1;time<=casenum;++time)for(int time=1;cin>>n;++time){init();work();release();}return 0; }

?

轉載于:https://www.cnblogs.com/gaudar/p/10756999.html

總結

以上是生活随笔為你收集整理的zoj2930的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。