| ||||||||||
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 |
哎,原来是一个细节没看到,真是受不了自己In Reply To:想哭了,这两个代码有什么不一样的,C++下 Posted by:lizeliang at 2009-08-15 14:10:21 > WA > > #include<iostream> > #define maxv 505 > using namespace std; > bool connected[maxv][maxv]; > int pre[maxv],ans,v; > bool used[maxv]; > bool dfs(int t) > { > for(int i=1;i<=v;i++) > { > if(connected[t][i] && !used[i]) > { > used[i]=true; > if(pre[i]==-1 || dfs(i)) > { > pre[i]=t; > return true; > } > } > } > return false; > } > int match() > { > ans=0; > memset(pre,-1,sizeof(pre)); > for(int i=1;i<=v;i++) > { > memset(used,0,sizeof(used)); > if(dfs(i)) > ans++; > } > return ans; > } > int main() > { > int a,b,e; > scanf("%d%d",&v,&e); > memset(connected,0,sizeof(connected)); > for(int i=1;i<=e;i++) > { > scanf("%d%d",&a,&b); > connected[a][b]=1; > } > printf("%d\n",match()); > return 0; > } > > > AC > > > #include <iostream> > #include <stdlib.h> > #define MAX 501 > > using namespace std; > > bool used[MAX]; > int match[MAX],res; > bool mat[MAX][MAX]; > > bool passway(int k,int n){//察看第k个点出发能否有增广路经 > int i; > for(i=1;i<=n;i++) > { > if(mat[k][i]) > {//k和i邻接 > if(!used[i]) > { > used[i] =1; > if(match[i]==-1 || passway(match[i],n)) > { > match[i] = k; > return true; > } > } > } > } > return false; > } > > void hungary(int n) > { > memset(match,-1,sizeof(match)); > > for(int i=1;i<=n;i++) > { > memset(used,0,sizeof(used)); > if(passway(i,n)) > res++; > } > } > > int main(int argc, char *argv[]) > { > int i,j,k,n,c,r; > memset(mat,0,sizeof(mat)); > > scanf("%d%d",&n,&k); > > for(i=1;i<=k;i++) > { > scanf("%d%d",&r,&c); > mat[r][c] = 1; > } > > res = 0; > hungary(n); > printf("%d\n",res); > > system("PAUSE"); > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator