⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poj1273.cpp

📁 本人最近在acm.pku.edu.cn上通过的程序
💻 CPP
字号:
#include <algorithm>

int     c[210][210], f[210][210];
int     pnt[210], d[210], mk[210];
int     n, m;
int     u, v, w;

int maxflow()
{
    int     cur, tail, i, j, u, v, flow = 0;
    int     open[1000];
    memset(f, 0, sizeof(f));
    
    do
    {
        memset(mk, 0, sizeof(mk));  memset(d, 0, sizeof(d));
        open[0] = 1;  mk[1] = 1;  d[1] = 0x3fffffff;
        for (pnt[1] = cur = tail = 0; cur <= tail && !mk[n]; cur++)
            for (u = open[cur], v = 1; v <= n; v++)
                if (!mk[v] && f[u][v] < c[u][v])
                {
                    mk[v] = 1;  open[++tail] = v; pnt[v] = u;
                    if (d[u] < c[u][v] - f[u][v]) d[v] = d[u];
                        else d[v] = c[u][v] - f[u][v]; 
                }
        if (!mk[n]) break;
        flow += d[n];
        for (u = n; u != 1; ) 
        { 
            v = u;   u = pnt[v]; 
            f[u][v] += d[n];  f[v][u] = -f[u][v]; 
        }
    }while (d[n] > 0);
    return flow;
}

int main()
{
    while (scanf("%d %d", &m, &n) != EOF)
    {
        memset(c, 0, sizeof(c));
        for (int i = 0; i < m; i++)
        {
            scanf("%d %d %d", &u, &v, &w);
            c[u][v] += w;            
        }
        printf("%d\n", maxflow());
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -