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

Re:哪里WA了 求大神指教

Posted by rabbit_lb at 2016-05-31 19:58:53
In Reply To:哪里WA了 求大神指教 Posted by:rabbit_lb at 2016-05-31 19:58:42
> #include<stdio.h>
> #include<string.h>
> #include<stdlib.h>
> #include<limits.h>
> #include<vector>
> #define min(a,b) (a)<(b)?(a):(b)
> 
> using namespace std;
> 
> struct node
> {
> 	int to,ca,re;
> };
> 
> typedef vector<node> edge;
> 
> edge G[1000];
> bool used[1000];
> 
> void add_edge(int s,int t,int c)
> {
> 	G[s].push_back((node){t,c,G[t].size()});
> 	G[t].push_back((node){s,0,G[s].size()-1});
> }
> 
> int dfs(int v,int t,int f)
> {
> 	if(v==t) return f;
> 	used[v]=true;
> 	for(int i=0;i<G[v].size();i++)
> 	{
> 		if(!used[G[v][i].to]&&G[v][i].ca>0)
> 		{
> 			int d=dfs(G[v][i].to,t,min(G[v][i].ca,f));
> 			if(d>0)
> 			{
> 				//printf("%d ",v);
> 				G[v][i].ca-=d;
> 				G[G[v][i].to][G[v][i].re].ca+=d;
> 				return d;
> 			}
> 		}
> 	}
> 	return 0;
> }
> 
> int max_flow(int s,int t)
> {
> 	int flow=0;
> 	while(true)
> 	{
> 		memset(used,false,sizeof(used));
> 		int f=dfs(s,t,INT_MAX);
> 		//printf("\n");
> 		if(f==0) return flow;
> 		flow+=f;
> 	}
> }
> 
> int main()
> {
> 	/*add_edge(0,1,10);
> 	add_edge(0,2,2);
> 	add_edge(1,2,6);
> 	add_edge(1,3,6);
> 	add_edge(2,4,5);
> 	add_edge(3,2,3);
> 	add_edge(3,4,8);
> 	printf("%d",max_flow(0,4));*/
> 	int n,f,d;
> 	scanf("%d%d%d",&n,&f,&d);
> 	int s=n*2+d+f,t=n*2+d+f+1;
> 	for(int i=0;i<f;i++)
> 	{
> 		add_edge(s,n*2+i,1);
> 	}
> 	for(int i=0;i<d;i++)
> 	{
> 		add_edge(n+2+f+i,t,1);
> 	}
> 	for(int i=0;i<n;i++)
> 	{
> 		add_edge(i,n+i,1);
> 		int tf,td;
> 		scanf("%d%d",&tf,&td);
> 		for(int j=0;j<tf;j++)
> 		{
> 			int tmp;
> 			scanf("%d",&tmp);tmp--;
> 			add_edge(n*2+tmp,i,1);
> 		}
> 		for(int j=0;j<td;j++)
> 		{
> 			int tmp;
> 			scanf("%d",&tmp);tmp--;
> 			add_edge(n+i,n*2+f+tmp,1);
> 		}
> 	}
> 	/*for(int i=0;i<n*2+f+d+2;i++)
> 	{
> 		printf("%d|",i);
> 		for(int j=0;j<G[i].size();j++)
> 		{
> 			printf("%d ",G[i][j].to);
> 		}
> 		printf("\n");
> 	}*/
> 	printf("%d\n",max_flow(s,t));
> }

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