| ||||||||||
| 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 | |||||||||
就改一个地方,while(scanf("%d",&n))->while(scanf("%d",&n)!=EOF)In Reply To:代码在这儿,c++RE,g++ac。不知为何 Posted by:tengshengbo at 2005-08-09 13:34:54 > #include <iostream>
> #include <cstdio>
> using namespace std;
> typedef int Graph[200][200];
> typedef int Path[200];
> Graph map,flow;
> int n,s,t;
> int EK()
> {
> int i, j, k=0, c, head, tail;
> Graph R;
> Path prev, visit, Q;
> for (i = 0; i < n; i++)
> {
> for (j = 0; j < n; j++)
> {
> flow[i][j] = 0;
> R[i][j] = map[i][j];
> }
> }
> while (true) {
> head = tail = 0;
> memset(visit, false, sizeof(visit));
> Q[tail++] = s;
> prev[s] = -1;
> visit[s] = 1;
> while (head < tail) {
> k = Q[head++];
> for (i = 0; i < n; i++)
> {
> if (!visit[i] && R[k][i] > 0)
> {
> visit[i] = 1;
> prev[i] = k;
> if (i == t) break;
> if(tail>=0) Q[tail++] = i;
> }
> }
> if(i==t) break;
> }
> if (!visit[t]) break;
> c = 1000000;
> j = t;
> while (j != s) {
> i = prev[j];
> if(c>R[i][j]) c=R[i][j];
> j = i;
> }
> j = t;
> while (j != s) {
> i = prev[j];
> flow[i][j] = flow[i][j] + c;
> flow[j][i] = -flow[i][j];
> R[i][j] = map[i][j] - flow[i][j];
> R[j][i] = map[j][i] - flow[j][i];
> j = i;
> }
> }
> c = 0;
> for (i = 0; i < n; i++) {
> c += flow[s][i];
> }
> return c;
> }
>
>
> int main()
> {
> while(scanf("%d",&n))
> {
> n=n+2;
> int i,j;
> memset(map,0,sizeof(map));
> s=n-2;
> t=n-1;
> int np,nc,m;
> scanf("%d%d%d",&np,&nc,&m);
> int u,v,z;
> char c[52];
> for(i=0;i<m;i++)
> {
> memset(c,0,sizeof(c));
> scanf("%s",&c);
> j=1;
> u=0;
> v=0;
> z=0;
> while(c[j]!=',')
> {
> u=u*10+c[j]-'0';
> j++;
> }
> j++;
> while(c[j]!=')')
> {
> v=v*10+c[j++]-'0';
> }
> j++;
> while(c[j]!=0)
> z=z*10+c[j++]-'0';
> if(u!=v)
> {
> map[u][v]=z;
> }
> //cout<<u<<" "<<v<<" "<<z<<endl;
> }
> for(i=0;i<np;i++)
> {
> memset(c,0,sizeof(c));
> scanf("%s",&c);
> j=1;
> u=0;
> z=0;
> while(c[j]!=')')
> {
> u=u*10+c[j]-'0';
> j++;
> }
> j++;
> while(c[j]!=0)
> {
> z=z*10+c[j]-'0';
> j++;
> }
> map[s][u]=z;
> // cout<<s<<" "<<u<<" "<<z<<endl;
> }
> for(i=0;i<nc;i++)
> {
> memset(c,0,sizeof(c));
> scanf("%s",&c);
> j=1;
> u=0;
> z=0;
> while(c[j]!=')')
> u=u*10+c[j++]-'0';
> j++;
> while(j<strlen(c))
> z=z*10+c[j++]-'0';
> map[u][t]=z;
> // cout<<u<<" "<<t<<" "<<z<<endl;
> }
> int result=EK();
> cout<<result<<endl;
> }
> return 0;
> }
>
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator