joj 1169
来源:互联网 发布:美萍进销存软件 编辑:程序博客网 时间:2024/06/06 12:22
这道题着实让我蛋疼了一下,看完书上的代码之后信心满满还稍微修改了一下方法来做这道题,结果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[n]==0)
break;
for(i=n;i!=1;i=p[i])
{
flow[p[i]][i]+=a[n];
flow[i][p[i]]-=a[n];
}
f+=a[n];
}
printf("Maximum number of goods: %d.\n",f);
}
}
- joj 1169
- JOJ 2257
- joj 2319
- joj 2653
- JOJ 2687
- joj 2693
- joj 2443
- joj 1173
- joj 1003
- joj 1066
- joj 1182
- joj 1195
- joj 1509
- joj 2526
- joj 2426
- joj 1595
- joj 2346
- joj 1184
- Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 二
- 内存管理
- 比尔盖茨十句话受益毕生
- 光荣成为群管理员
- IOS应用内购买(In App Purchase)总结
- joj 1169
- 社保,贸易保险该如何搭配
- 使用Java动态代理实现简单AOP
- windows下tomcat+mysql配置jpetstore全过程
- BSCMAKE: error BK1506 : : No such file or directory解决方法 -----VS2008
- Linux 入门常用命令<一>
- sql游标
- linux下gcc命令
- Linux 入门常用命令<二>