请求新数据!

P3376 【模板】网络最大流

luowa @ 2019-09-24 20:09:07

没弄反向边居然90,而且还是t的一个点


by luowa @ 2019-09-24 20:11:07

顺便……我t了,救救我

#include <bits/stdc++.h> 
using namespace std;
int n,m,s,t;
int i,j,k;
int ans;
int a,b,c,d;
struct bian
{
    int v;
    int data;
    int next;
};
bian w[100010],fan[100010];
int wnum;
int zz[10010],liu[10010],first[10010];
int bfs()
{
    int now,ii,liunum=0,minn=1e9+7,zznum=0;
    queue<int> q;
    q.push(s);
    for(ii=1;ii<=n;ii++)    liu[ii]=0;
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        ii=first[now];
        do
        {
            if(w[ii].data&&!liu[w[ii].v])
            {
                q.push(w[ii].v);
                liu[w[ii].v]=now;
            }
            ii=w[ii].next;
        }while(ii);
    }
    ii=t;
    if(liu[ii]==0)  return 0;
    while(ii!=s)
    {
        int qqq=liu[ii];
        qqq=first[qqq];
        while(w[qqq].v!=ii)
            qqq=w[qqq].next;
        zz[++zznum]=qqq;
        minn=min(minn,w[qqq].data);
        ii=liu[ii];
    }
    ans+=minn;
    for(ii=1;ii<=zznum;ii++)
    {
        w[zz[ii]].data-=minn;
        zz[ii]=0;
    }
    return 1;
}
int main()
{
    scanf("%d%d%d%d",&n,&m,&s,&t);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        w[++wnum].data=c;
        w[wnum].v=b;
        w[wnum].next=first[a];
        first[a]=wnum;
    }
    while(bfs());
    printf("%d",ans);
    return 0;
}

评测


by Null_Cat @ 2019-09-24 20:17:40

能卡掉就行。。。


|