[ZJOI2007] 矩阵游戏
2018-03-25 16:35
225 查看
题目描述:
雾。题目分析:
既然我们要求每行每列都要有一个 1 ,那么我们就可以这样进行建立了这个二分图。左边有 n 个点,代表行,右边有 n 个点,代表列。
做这题的主要目的是打板子
二分图匹配用的Dinic
题目链接:
BZOJ 1059这里写链接内容
Ac 代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <queue> const int inf=0x7fffffff; const int maxm=1e6+100; int head[maxm],to[maxm<<1],cap[maxm<<1],net[maxm<<1]; int cnt=1; inline void add(int u,int v,int c){cnt++;to[cnt]=v,cap[cnt]=c,net[cnt]=head[u],head[u]=cnt;} inline void addedge(int u,int v,int c){add(u,v,c),add(v,u,0);} int deep[maxm]; std::queue<int> dl; namespace Maxflow{ inline bool BFS(int s,int t) { while(!dl.empty()) dl.pop(); memset(deep,-1,sizeof(deep)); dl.push(s),deep[s]=0; while(!dl.empty()) { int now=dl.front(); dl.pop(); for(int i=head[now];i;i=net[i]) if(cap[i]>0&&deep[to[i]]==-1) dl.push(to[i]),deep[to[i]]=deep[now]+1; } return deep[t]!=-1; } int dfs(int now,int flow,int t) { if(now==t) return flow; int w,used=0; for(int i=head[now];i;i=net[i]) { int v=to[i]; if(deep[v]==deep[now]+1&&cap[i]) { w=dfs(v,std::min(cap[i],flow),t); cap[i]-=w,cap[i^1]+=w; used+=w; if(used==flow) return flow; } } if(!used) deep[now]=-1; return used; } int dinic(int s,int t) { int maxflow=0; while(BFS(s,t)) maxflow+=dfs(s,inf,t); return maxflow; } } void work() { memset(head,0,sizeof(head)); cnt=1; int n; scanf("%d",&n); int s=0,t=2*n+10; for(int i=1;i<=n;i++) { addedge(s,i,1),addedge(i+n,t,1); for(int j=1,x;j<=n;j++) { scanf("%d",&x); if(x) addedge(i,j+n,1); } } if(Maxflow::dinic(s,t)==n) printf("Yes\n"); else printf("No\n"); } int main() { int t; scanf("%d",&t); while(t--) work(); return 0; }
相关文章推荐
- BZOJ1059: [ZJOI2007]矩阵游戏
- 12.7 bzoj1059[ZJOI2007]矩阵游戏
- 1059: [ZJOI2007]矩阵游戏
- bzoj1059: [ZJOI2007]矩阵游戏(二分图匹配)
- [BZOJ1059][ZJOI2007]矩阵游戏
- 【洛谷1129】 [ZJOI2007]矩阵游戏
- [省选前题目整理][BZOJ 1059][ZJOI 2007]矩阵游戏(二分图最大匹配)
- [BZOJ1059][ZJOI2007]矩阵游戏(二分图匹配)
- bzoj 1059: [ZJOI2007]矩阵游戏(二分匹配)
- 【bzoj1059】[ZJOI2007]矩阵游戏 二分图最大匹配
- 洛谷 P1129 BZOJ 1059 cogs 660 [ZJOI2007]矩阵游戏
- _bzoj1059 [ZJOI2007]矩阵游戏【二分图匹配】
- [ZJOI2007]矩阵游戏 二分图匈牙利算法
- 洛谷P1129 [ZJOI2007]矩阵游戏
- 二分图——洛谷P1129 [ZJOI2007]矩阵游戏
- Bzoj1059 [ZJOI2007]矩阵游戏
- [ZJOI2007]矩阵游戏
- 【bzoj1059 ZJOI2007】矩阵游戏(二分图匹配)
- 1059: [ZJOI2007]矩阵游戏
- BZOJ 1059: [ZJOI2007]矩阵游戏【二分图匹配】