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 |
有大神帮忙看一看么 为啥就是tle 别的人和我写的差不多都能过,心好累#include<cstdio> #include<string> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<algorithm> #include<vector> #include<queue> #include<map> #include<set> #include<stack> #define ll long long #define read(a) scanf("%d",&a); using namespace std; const int maxn=105; const int inf=99999999; int c[maxn][maxn]; bool book[maxn]; int pre[maxn]; int main(){ //freopen("test.txt","r",stdin); int n,np,nc,m; char c1,c2,c3; //int i,j; int ans; int mini; int first,second,third; char temp[20]; int num; //while(cin>>n>>np>>nc>>m){ while(~scanf("%d %d %d %d",&n,&np,&nc,&m)){ memset(c,0,sizeof(c)); n++; for(int i=0;i<m;i++){ scanf("%s",temp);sscanf(temp,"(%d,%d)%d",&first,&second,&third); first++;second++; c[first][second]+=third; } for(int i=0;i<np;i++){ scanf("%s",temp);sscanf(temp,"(%d)%d",&first,&second); first++; c[0][first]+=second; } for(int i=0;i<nc;i++){ scanf("%s",temp);sscanf(temp,"(%d)%d",&first,&second); first++; c[first][n]+=second; } ans=0; while(1){ for(int i=0;i<=n;i++){ book[i]=false; pre[i]=-1; } queue<int>q; mini=inf; q.push(0); book[0]=true; while(!q.empty()){ num=q.front(); q.pop(); if(book[n]) break; for(int i=0;i<=n;i++){ if(book[i]==false&&c[num][i]>0){ book[i]=true; pre[i]=num; mini=min(mini,c[num][i]); q.push(i); } } } if(!book[n]) break; ans+=mini; int tmp=n; while(pre[tmp]!=-1){ c[pre[tmp]][tmp]-=mini; c[tmp][pre[tmp]]+=mini; tmp=pre[tmp]; } } printf("%d\n",ans); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator