| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
【EK】EK:
#include<stdio.h>
#include<algorithm>
#include<queue>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define mem(a,b) memset(a,b,sizeof(a))
#define inf 99999999
using namespace std;const int N=203;
int n,m,flow,S[N][N],pig[N*10],que[N], pre[N];
bool bfs(){
____queue<int>q;bool vis[N]={0};vis[0]=true;q.push(0);
____while(!q.empty()){int u =q.front();q.pop();
____go(v,0,n)if(!vis[v]&&S[u][v]){vis[v]=1;pre[v]=u;
____if(v==n)return 1;q.push(v);}}return 0;
}
int aug(){int u,a=inf;
____u=n;while(u)a=min(a,S[pre[u]][u]),u=pre[u];
____u=n;while(u)S[pre[u]][u]-=a,S[u][pre[u]]+=a,u=pre[u];return a;
}
int main(){
____int k,cnt;scanf("%d%d",&m,&n);
____go(i,1,m)scanf("%d",&pig[i]);go(i,1,n){scanf("%d",&cnt);
____go(p,1,cnt){scanf("%d",&k);if(!pre[k])S[0][i]+=pig[k];
____else S[pre[k]][i]=inf;pre[k]=i;}scanf("%d",&S[i][n+1]);}n++;
____while(bfs())flow+=aug();printf("%d\n",flow);return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator