joj 1169
2011-09-16 20:12
197 查看
这道题着实让我蛋疼了一下,看完书上的代码之后信心满满还稍微修改了一下方法来做这道题,结果wa的暗无天日,后来猛然想到oj的测试数据不一定一半是零,然后感觉样例输入果然很坑人,然后AC:
#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
int cap[32][32];
int flow[32][32];
int a[32];
int p[32];
int main()
{
int n;
while(scanf("%d",&n),n)
{
memset(flow,0,sizeof(flow));
memset(cap,0,sizeof(cap));
int i,j;
int f=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
int m;
scanf("%d",&m);
cap[i][j]+=m;
cap[j][i]+=m;
flow[j][i]+=m;
}
if(n==1)
printf("Maximum number of goods: 0.\n");
int flag=0;
while(1)
{
memset(a,0,sizeof(a));
a[1]=2147483647;
queue<int> q;
q.push(1);
while(!q.empty())
{
int k=q.front();
q.pop();
for(i=1;i<=n;i++)
if(a[i]==0&&cap[k][i]>flow[k][i])
{
p[i]=k;
q.push(i);
a[i]=((a[k]<(cap[k][i]-flow[k][i]))?a[k]:(cap[k][i]-flow[k][i]));
}
}
if(a
==0)
break;
for(i=n;i!=1;i=p[i])
{
flow[p[i]][i]+=a
;
flow[i][p[i]]-=a
;
}
f+=a
;
}
printf("Maximum number of goods: %d.\n",f);
}
}
#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
int cap[32][32];
int flow[32][32];
int a[32];
int p[32];
int main()
{
int n;
while(scanf("%d",&n),n)
{
memset(flow,0,sizeof(flow));
memset(cap,0,sizeof(cap));
int i,j;
int f=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
int m;
scanf("%d",&m);
cap[i][j]+=m;
cap[j][i]+=m;
flow[j][i]+=m;
}
if(n==1)
printf("Maximum number of goods: 0.\n");
int flag=0;
while(1)
{
memset(a,0,sizeof(a));
a[1]=2147483647;
queue<int> q;
q.push(1);
while(!q.empty())
{
int k=q.front();
q.pop();
for(i=1;i<=n;i++)
if(a[i]==0&&cap[k][i]>flow[k][i])
{
p[i]=k;
q.push(i);
a[i]=((a[k]<(cap[k][i]-flow[k][i]))?a[k]:(cap[k][i]-flow[k][i]));
}
}
if(a
==0)
break;
for(i=n;i!=1;i=p[i])
{
flow[p[i]][i]+=a
;
flow[i][p[i]]-=a
;
}
f+=a
;
}
printf("Maximum number of goods: %d.\n",f);
}
}
相关文章推荐
- JOJ1169: Super Market
- joj 1169
- [转]LINK 2005 和 LINK 1169 的解决办法
- JOJ 1115 1116 1117 1118
- joj 登不上了……,题写完rt,
- JOJ 1198: Risk
- 忘了是joj第几题了 剩余定理
- joj1995
- joj 2660: 河床 求最长区间满足条件(0<=max-min<=k) 单调队列
- joj 2526: medic
- joj 2431: Shift and Increment (模板队列与数组模拟队列的对比练习)
- Exponentiation(poj能通过,joj不能)
- joj 1066
- joj 2653 不同的数 从2*n中找出不相同的两个数
- joj 1131 Intersection
- joj2252
- JOJ 1240 The Decoder
- joj 1171
- JOJ1483:Exponentiation
- joj1146