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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

POJ1149-PIGS

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1149-PIGS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,從各個顧客到匯點各有一條邊,容量就是各個顧客能買的數量上限。

2,在某一輪中,從該顧客打開的所有豬圈都有一條邊連向該顧客,容量都是∞。

3,最后一輪除外,從每一輪的i號豬圈都有一條邊連向下一輪的i號豬圈,容量都是∞,表示這一輪剩下的豬可以留到下一輪。

4,最后一輪除外,從每一輪被打開的所有豬圈,到下一輪的同樣這些豬圈,兩兩之間都要連一條邊,表示它們之間可以任意流通。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;struct node{int v,w,nextt;
}e[100005];
int head[105],deep[105],cur[105];
int a[1005],sign[1005];
vector<int>b[105];
int s,t,tot;
inline int read(){int sum=0,x=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')x=0;ch=getchar();}while(ch>='0'&&ch<='9')sum=(sum<<1)+(sum<<3)+(ch^48),ch=getchar();return x?sum:-sum;
}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');
}
void addedge(int u,int v,int w){e[tot].v=v;e[tot].w=w;e[tot].nextt=head[u];head[u]=tot++;e[tot].v=u;e[tot].w=0;e[tot].nextt=head[v];head[v]=tot++;}
bool bfs(){for(int i=0;i<=t;i++)deep[i]=0;queue<int>que;que.push(s);deep[s]=1;while(!que.empty()){int u=que.front();que.pop();for(int i=head[u];~i;i=e[i].nextt){int v=e[i].v;if(e[i].w>0&&deep[v]==0){deep[v]=deep[u]+1;if(v==t)return true;que.push(v);}}}return deep[t]==0?false:true;
}
int dfs(int u,int fl){if(u==t)return fl;int x,ans=0;for(int i=cur[u];~i;i=e[i].nextt){int v=e[i].v;if(e[i].w>0&&deep[v]==deep[u]+1){x=dfs(v,min(fl-ans,e[i].w));ans+=x;e[i].w-=x;e[i^1].w+=x;if(e[i].w)cur[u]=1;if(ans==fl)return fl;}}if(ans==0)deep[u]=0;return ans;
}
int dinic(int n){int ans=0;while(bfs()){for(int i=0;i<=n;i++)cur[i]=head[i];ans+=dfs(s,inf);}return ans;
}
void init(int n){s=0,t=n+1;memset(head,-1,sizeof(head));
}
int main(){int m=read(),n=read();init(n);for(int i=1;i<=m;i++)a[i]=read();for(int i=1;i<=n;i++){int x=read(),y;while(x--){y=read();b[i].push_back(y);}y=read();addedge(i,t,y);}for(int i=1;i<=n;i++){for(int j=0;j<b[i].size();j++){int v=b[i][j];if(!sign[v]){sign[v]=i;addedge(s,i,a[v]);}else{addedge(sign[v],i,inf);sign[v]=i;}}}write(dinic(t));putchar('\n');return 0;
}
View Code

?

轉載于:https://www.cnblogs.com/starve/p/10934492.html

總結

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

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