惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
Vercel News
Vercel News
D
DataBreaches.Net
Microsoft Azure Blog
Microsoft Azure Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Cloudbric
Cloudbric
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hugging Face - Blog
Hugging Face - Blog
Security Latest
Security Latest
T
Threatpost
GbyAI
GbyAI
K
Kaspersky official blog
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
V
V2EX
W
WeLiveSecurity
Recorded Future
Recorded Future
WordPress大学
WordPress大学
L
LINUX DO - 最新话题
O
OpenAI News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
有赞技术团队
有赞技术团队
Attack and Defense Labs
Attack and Defense Labs
N
News | PayPal Newsroom
H
Help Net Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Webroot Blog
Webroot Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Troy Hunt's Blog
腾讯CDC
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
E
Exploit-DB.com RSS Feed

博客园 - zy_nic

SRM 424 div1 900 ProductOfPrices 翻译 .. emacs的c++mode contest contest 我的2-sat模板 Solution to GCJ Practice Contest Problem C, Cycles 约瑟夫问题的数学方法 我的模板 图的应用 pku3411 今天的比赛 关于建图的 死老鼠安装成功 pku3141 先帖个题目上来 hnu 11028 hnu 11015 joj 儿死三八
pku 1273
zy_nic · 2007-09-07 · via 博客园 - zy_nic

啥也不说了 最大流  注意重边

 1#include <iostream>
 2using namespace std;
 3
 4//求网络最大流,邻接阵形式
 5//返回最大流量,flow返回每条边的流量
 6//传入网络节点数n,容量mat,源点source,汇点sink
 7
 8#define MAXN 210
 9#define inf 2110000000
10
11int max_flow(int n,int mat[][MAXN],int source,int sink,int flow[][MAXN]){
12    int pre[MAXN],que[MAXN],d[MAXN],p,q,t,i,j;
13    if (source==sink) return inf;
14    for (i=0;i<n;i++)
15        for (j=0;j<n;flow[i][j++]=0);
16    for (;;){
17        for (i=0;i<n;pre[i++]=0);
18        pre[t=source]=source+1,d[t]=inf;
19        for (p=q=0;p<=q&&!pre[sink];t=que[p++])
20            for (i=0;i<n;i++)
21                if (!pre[i]&&(j=mat[t][i]-flow[t][i]))
22                    pre[que[q++]=i]=t+1,d[i]=d[t]<j?d[t]:j;
23                else if (!pre[i]&&(j=flow[i][t]))
24                    pre[que[q++]=i]=-t-1,d[i]=d[t]<j?d[t]:j;
25        if (!pre[sink]) break;
26        for (i=sink;i!=source;)
27            if (pre[i]>0)
28                flow[pre[i]-1][i]+=d[sink],i=pre[i]-1;
29            else
30                flow[i][-pre[i]-1]-=d[sink],i=-pre[i]-1;
31    }

32    for (j=i=0;i<n;j+=flow[source][i++]);
33    return j;
34}

35
36
37int mat[MAXN][MAXN],flow[MAXN][MAXN];
38
39int n,m;
40
41void init()
42{
43    int i;
44    int f,t,c;
45
46    memset(mat,0,sizeof(mat));
47
48    for (i=0;i<m;i++)
49    {
50        scanf("%d%d%d",&f,&t,&c);
51        mat[f-1][t-1]+=c;
52    }

53}

54
55int main()
56{
57    while (scanf("%d%d",&m,&n)==2)
58    {
59        init();
60        printf("%d\n",max_flow(n,mat,0,n-1,flow));
61    }

62    return 0;
63}

64
65