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

hdoj 3549 Flow Problem(网络流 E…

2018年03月17日 ⁄ 综合 ⁄ 共 963字 ⁄ 字号 评论关闭
题意:给你个图 求最大流

说点自己想法吧,因为写错个变量,花了一个晚上检查,到最后才发现,原来 全局变量t 跟T写一样了hdoj <wbr>3549 <wbr>Flow <wbr>Problem(网络流 <wbr>EK)hdoj <wbr>3549 <wbr>Flow <wbr>Problem(网络流 <wbr>EK)hdoj <wbr>3549 <wbr>Flow <wbr>Problem(网络流 <wbr>EK)

这个就是我个人的EK模板吧
#include <stdio.h>
#include <string.h>
#define VM 20
#define EM 1005
#define inf 20000

int map[VM][VM],que[VM],pre[VM],s,t;

int bfs (int n)
{
    int front =
0,rear = 0;
    memset
(pre,-1,sizeof(pre));
    pre[s] =
0;
    que[rear ++]
= s;
    while (front
!= rear)
    {
       
int u = que[front ++];
       
for (int v = 1;v <= n;v ++)
       
{
           
if (pre[v] != -1||map[u][v] == 0)
               
continue;
           
pre[v] = u;
           
if (v == t)
               
return 1;
           
que[rear++] = v;
       
}
    }
    return
0;
}
int EK (int n)
{
    int ans =
0,i;
    while
(bfs(n))
    {
       
int min = inf;
       
for (i = t;i != s;i = pre[i])
           
min = min > map[pre[i]][i]?map[pre[i]][i]:min;
       
ans += min;
       
for (i = t;i != s;i = pre[i])
       
{
           
map[pre[i]][i] -= min;
           
map[i][pre[i]] += min;
       
}
    }

    return
ans;
}
int main ()
{
    int
T,n,m,v1,v2,cost;
    scanf
("%d",&T);
    int count =
1;
    while (T
--)
    {
       
scanf ("%d%d",&n,&m);
       
memset (map,0,sizeof(map));
    

抱歉!评论已关闭.