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

为什么别人用DFS增广可以我的却超时,第一次做这种题,各位看一下是哪里不对

Posted by smallbox at 2009-02-06 14:20:35 on Problem 1273
#include "iostream"
const int INFI=1<<30;
int rest[202][202];
int arc[202][202];
int N,M;
int ans;
bool Used[202];
int DFS(int root,int min)
{
     if(root==N-1)return min;
     for(int i=0;i<N;i++)
     {
         if(rest[root][i]>0&&Used[i]==0)
         {
             min<?=rest[root][i];
             Used[i]=1;
             int inc=DFS(i,min);
             Used[i]=0;
             if(inc>0)
             {
                 rest[root][i]-=inc;
                 rest[i][root]+=inc;
                 return inc;
             }
         }
     }
     return 0;
}
main()
{
    while(scanf("%d %d",&M,&N)!=EOF)
    {
        memset(arc,0,sizeof(arc));
        memset(rest,0,sizeof(rest));
        memset(Used,0,sizeof(Used));
        for(int i=0;i<M;i++)
        {
            int a,b,c;
            scanf("%d %d %d",&a,&b,&c);
            arc[a-1][b-1]>?=c;
            rest[a-1][b-1]>?=c;
        }
        ans=0;
        int inc;
        while(1)
        {
            Used[0]=1;
            inc=DFS(0,INFI);
            Used[0]=0;
            if(inc==0)break;
            ans+=inc;
        }
        printf("%d\n",ans);
    }
}
      

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