Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

构图是重点,贴代码!!!

Posted by huxipeng at 2014-04-13 11:42:35 on Problem 1149
#include<iostream>
#include<queue>
#define inf 99999999
using namespace std;
int house[1005];
int last[1005];
int map[1005][1005];
int pre[1005];
int n,np,nc,m;
queue<int>myque;
bool bfs(int s,int t)
{
   memset(pre,-1,sizeof(pre));
   while (!myque.empty())
	   myque.pop();
	   pre[s]=0;
	   int index;
	   myque.push(s);
	   while (!myque.empty())
	   {
		   index=myque.front();
		   myque.pop();
		   for (int i=s;i<=t;i++)
		   {
			   if (pre[i]==-1&&map[index][i]>0)
			   {
				   pre[i]=index;
				   if(i==t) return true;
				   myque.push(i);
			   }
		   }
	   }
	   return false;
}

int Flow(int s,int t)
{
   int maxflow=0;
   while (bfs(s,t))
   {
	   int minflow=inf;
	   int i;
	   for(i=t;i!=s;i=pre[i])
		   minflow=min(minflow,map[pre[i]][i]);
	   for (i=t;i!=s;i=pre[i])
	   {
		   map[pre[i]][i]-=minflow;
		   map[i][pre[i]]+=minflow;
	   }
	   maxflow+=minflow;
   }
   return maxflow;
}



int main()
{
    int cus_num,num,buy;
	int hou_num;
	int s,t,k;
	
	memset(map,0,sizeof(map));
	memset(house,0,sizeof(house));
	memset(last,0,sizeof(last));

	cin>>hou_num>>cus_num;
	s=0;t=cus_num+1;
	for(int i=1;i<=hou_num;i++)
	{
	    cin>>house[i]; 
	}

	for(int i=1;i<=cus_num;i++)
	{
	     cin>>num;
		 for(int j=1;j<=num;j++)
		 {
			  cin>>k;
		      if(last[k]==0)
				  map[s][i]+=house[k];
			  else
				  map[last[k]][i]=inf; 
			  
			  last[k]=i;			
		 } 
		 cin>>buy;
		 map[i][t]=buy;		
	}
	

	cout<<Flow(s,t)<<endl;
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator