HDU 3549 — Flow Problem 入门题
admin
2024-04-10 12:54:21

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3549

题意:给定n个点,m条边,以及边上的容量,问1到n的最大流;

#include
#include
#include
#include
#includeusing namespace std;
#define inf 999999999;
const int N = 20;
int cap[N][N], flow[N][N];			//cap表示容量,flow表示当前流量; 
int a[N], p[N];			//a[i]表示从s到i的最小残量,p表示增广路上一节点; 
int n, m;int bfs(int s, int t)
{queueq;memset(flow, 0, sizeof(flow));int ans = 0;while(1){memset(a, 0, sizeof(a));a[s] = inf;q.push(s);while(!q.empty()){int u = q.front();q.pop();for(int v = 1;v<=n;v++){if(!a[v] && cap[u][v]>flow[u][v]){p[v] = u;a[v] = min(a[u], cap[u][v]-flow[u][v]);q.push(v);}}}if(a[t] == 0)break;for(int u = t;u!=s;u = p[u]){flow[p[u]][u]+=a[t];flow[u][p[u]]-=a[t];}ans+=a[t];}return ans;
}int main()
{int cas;int T = 0;scanf("%d", &cas);while(cas--){memset(cap, 0, sizeof(cap));scanf("%d%d", &n, &m);for(int i = 1;i<=m;i++){int u, v, w;scanf("%d%d%d", &u, &v, &w);cap[u][v]+=w;}printf("Case %d: %d\n", ++T, bfs(1, n));}return 0;
}

相关内容

热门资讯

四川攀枝花发布十大必打卡点和十... 封面新闻记者 周翼 徐湘东 3月12日,在2025年消费者权益保护工作成效等新闻发布会上,攀枝花市文...
美式炸鸡和韩式炸鸡区别!一文看... 同样是炸鸡,美式炸鸡和韩式炸鸡火遍全网,但很多吃货傻傻分不清楚,点餐时总踩雷;创业者也容易混淆,不知...
小份菜、小火锅、小餐漂亮饭……... 文|红餐网 很多餐饮老板感到生意难做,往往是从一个很小的数字开始的。2.6人,这是目前到店就餐的平...
4个馒头卖出3万元:大学生用创... 近日,一则"大学生研发养生馒头4个卖了3万元"的消息在网络上引发热议。这看似不可思议的交易背后,是武...
原创 夏... 夏天超下饭的麻辣家常菜,米饭炫了一碗又一碗 章继刚 太阳底下无新事,却有旧胃口 这个春天,来得比往年...