现在的位置: 首页 > 综合 > 正文

hdu 3549 Flow Problem (最大流)

2013年08月25日 ⁄ 综合 ⁄ 共 1217字 ⁄ 字号 评论关闭

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

好吧,哥错了!偷懒了!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这道题和上一道题明明就是一样吗!《》《》《》《》《》《》《》《》《》《》《

~~~~~~~~~~~~~~~~~~~~~~~~~~~只是多了一点小小的东西!加了一些直接提交了!

不行有点懒了,下午再来实验室打一遍!

{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}

~~~~~不能太懒不是吗!&&&&&&&&&&&&&&&&&&&&&

加油!

()()()()()()()()()()()()()()()()()

#include<stdio.h>

#include<string.h>
#include<queue>
using namespace std;

#define inf 1000000
#define min(a,b) a<b?a:b

int map[1010][1010],pre[1010],maxf[1010];
int n,m;

int bfs()
{
int i;
queue<int>q;
for(i=0;i<=m;i++)
{
maxf[i]=inf;
pre[i]=-1;
}
pre[1]=0;
q.push(1);
while(!q.empty())
{
int qian=q.front();
q.pop();
int hou;
for(hou=1;hou<=m;hou++)
{
if(map[qian][hou]&&pre[hou]==-1)
{
pre[hou]=qian;
maxf[hou]=min(maxf[qian],map[qian][hou]);
q.push(hou);
}
}
}
if(pre[m]==-1)return 0;
return maxf[m];
}
int ek()
{
int max=0,kejia;
while(kejia=bfs())
{
max+=kejia;
int index=m,qian;
while(index!=1)
{
qian=pre[index];
map[qian][index]-=kejia;
map[index][qian]+=kejia;
index=qian;
}
}
return max;
}
int main()
{
int i,u,v,w,ans,t,r;
scanf("%d",&t);
r=1;
while(t--)
{
scanf("%d%d",&m,&n);
memset(map,0,sizeof(map));
for(i=0;i<n;i++)
{
scanf("%d%d%d",&u,&v,&w);
map[u][v]+=w;
}
ans=ek();
printf("Case %d: ",r++);
printf("%d\n",ans);
}
return 0;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549

抱歉!评论已关闭.