洛谷P3386 【模板】二分图匹配
2018-08-21 09:58
357 查看
传送门
板子,直接用dinic
板子,直接用dinic
//minamoto #include<iostream> #include<cstdio> #include<cstring> #include<queue> #define inf 0x3f3f3f3f using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) char buf[1<<21],*p1=buf,*p2=buf; inline int read(){ #define num ch-'0' char ch;bool flag=0;int res; while(!isdigit(ch=getc())) (ch=='-')&&(flag=true); for(res=num;isdigit(ch=getc());res=res*10+num); (flag)&&(res=-res); #undef num return res; } const int N=2005,M=2100005; int ver[M],Next[M],head ,edge[M],tot=1; int dep ,cur ,s,t; int n,m,k; queue<int> q; inline void add(int u,int v,int e){ ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e; ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=0; } bool bfs(){ memset(dep,-1,sizeof(dep)); while(!q.empty()) q.pop(); for(int i=s;i<=t;++i) cur[i]=head[i]; q.push(s),dep[s]=0; while(!q.empty()){ int u=q.front();q.pop(); for(int i=head[u];i;i=Next[i]){ int v=ver[i]; if(dep[v]<0&&edge[i]){ dep[v]=dep[u]+1,q.push(v); if(v==t) return true; } } } return false; } int dfs(int u,int limit){ if(!limit||u==t) return limit; int flow=0,f; for(int i=cur[u];i;i=Next[i]){ int v=ver[i];cur[u]=i; if(dep[v]==dep[u]+1&&(f=dfs(v,min(limit,edge[i])))){ flow+=f,limit-=f; edge[i]-=f,edge[i^1]+=f; if(!limit) break; } } return flow; } int dinic(){ int flow=0; while(bfs()) flow+=dfs(s,inf); return flow; } int main(){ n=read(),m=read(),k=read(); s=0,t=n+m+1; for(int i=1;i<=n;++i) add(s,i,1); for(int i=n+1;i<=n+m;++i) add(i,t,1); for(int i=1;i<=k;++i){ int u=read(),v=read(); if(v>m) continue; add(u,v+n,1); } printf("%d\n",dinic()); return 0; }
相关文章推荐
- 洛谷—— P3386 【模板】二分图匹配
- 洛谷 P3386【模板】二分图匹配
- 洛谷 P3386 【模板】二分图匹配
- 洛谷 P3386 【模板】二分图匹配
- 洛谷 P3386 【模板】二分图匹配
- 【模板】匈牙利算法 二分图匹配 (模版题:洛谷P3386)
- 洛谷 P3386 【模板】二分图匹配
- AC日记——【模板】二分图匹配 洛谷 P3386
- 洛谷 P3386 【模板】二分图匹配
- 洛谷P3386【模板】二分图匹配
- 洛谷P3386 【模板】二分图匹配
- 洛谷 P3386 【模板】二分图匹配 Dinic版
- P3386 【模板】二分图匹配(网络流与线性规划24题01飞行员配对方案问题)
- 洛谷 3386 二分图匹配模板 匈牙利算法
- P3386 【模板】二分图匹配
- [洛谷 3386]【模板】二分图匹配---匈牙利算法
- P3386 【模板】二分图匹配 Ek 与 dinic
- 洛谷 P3386 二分图最大匹配模板
- P3386 【模板】二分图匹配(匈牙利&最大流)
- P3386 【模板】二分图匹配