试题库问题
来源:互联网 发布:vi手册用什么软件 编辑:程序博客网 时间:2024/05/08 03:42
链接:swust的oj竟然没有SPJ,做法不一样,a不了。
题意:中文题。
分析:网络流24题第七题。多重匹配的基础问题,模型很简单。
代码:
#include<map>#include<set>#include<cmath>#include<queue>#include<bitset>#include<math.h>#include<vector>#include<string>#include<sstream>#include<stdio.h>#include<cstring>#include<iostream>#include<algorithm>#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;const int N=1050;const int MAX=1000000100;const int mod=100000000;const int MOD1=1000000007;const int MOD2=1000000009;const double EPS=0.00000001;typedef long long ll;const ll MOD=998244353;const int INF=1000000010;const double pi=acos(-1.0);typedef double db;typedef unsigned long long ull;int tot,u[N],v[22*N],cap[22*N],flow[22*N],pre[22*N];void add(int a,int b,int c,int f) { v[tot]=b;cap[tot]=c;flow[tot]=f;pre[tot]=u[a];u[a]=tot++;}bool q[2*N];int d[2*N],dis[2*N],head[2*N];bool bfs(int a,int b) { int i,l=1,r=1; memset(q,0,sizeof(q)); d[1]=a;q[a]=1;dis[a]=0; for (;l<=r;l++) for (i=u[d[l]];i!=-1;i=pre[i]) if (!q[v[i]]&&cap[i]>flow[i]) q[v[i]]=1,d[++r]=v[i],dis[v[i]]=dis[d[l]]+1; return q[b];}int dfs(int a,int b,int en) { if (a==en||b==0) return b; int ret=0,f; for (int& i=u[a];i!=-1;i=pre[i]) if (dis[v[i]]==dis[a]+1&&(f=dfs(v[i],min(b,cap[i]-flow[i]),en))>0) { flow[i]+=f;flow[i^1]-=f; ret+=f;b-=f; if (b==0) break ; } return ret;}int main(){ int a,b,i,j,k,n,sum=0,ans=0; scanf("%d%d", &k, &n); tot=0;memset(u,-1,sizeof(u)); for (i=1;i<=n;i++) add(0,i,1,0),add(i,0,0,0); for (i=1;i<=k;i++) { scanf("%d", &a);sum+=a; add(n+i,n+k+1,a,0);add(n+k+1,n+i,0,0); } for (i=1;i<=n;i++) { scanf("%d", &a); for (j=1;j<=a;j++) { scanf("%d", &b); add(i,n+b,1,0);add(n+b,i,0,0); } } for (i=0;i<=n+k+1;i++) head[i]=u[i]; while (bfs(0,n+k+1)) { ans+=dfs(0,INF,n+k+1); for (i=0;i<=n+k+1;i++) u[i]=head[i]; } if (sum!=ans) printf("No Solution!\n"); else { for (i=1;i<=k;i++) { printf("%d: ", i);a=0; for (j=u[n+i];j!=-1;j=pre[j]) if (flow[j]&&v[j]!=n+k+1) printf("%d ", v[j]); printf("\n"); } } return 0;}
0 0
- 试题库问题
- 试题库问题
- 试题库问题
- 试题库问题
- [SMOJ2208]试题库问题
- 试题库
- Power OJ 1742试题库问题
- [网络流24题 #7]试题库问题
- 试题库问题(网络24题,五)
- 试题库问题 二分多重匹配+输出解
- 【网络流24题】试题库问题
- 网络流24题之试题库问题
- 【网络流24题】试题库问题
- 试题库问题 洛古2763 网络流
- 网络流24题7. 试题库问题
- [网络流24题]试题库问题
- 试题库问题 最大流 输出方案
- 网络流24题:试题库问题
- Hibernate大批量的数据更新缓存问题(Could not synchronize database state with session)
- xss基础之xss网站找寻
- logback和slf4j的使用之appender使用
- 【自用】常用资料链接(持续更新)
- C# 使用 StreamWriter 写入数据
- 试题库问题
- 剑指offer----O(1)时间删除给定链表中的节点
- AndroidStudio mac版快捷键总结
- 图像处理与计算机视觉:基础,经典以及最近发展(3)计算机视觉中的信号处理与模式识别
- eclipse关联github的详细方法
- 遍历list的几种方式
- 设置phpmyadmin链接多个数据库
- apche转发与负载均衡
- RxJava操作符之创建操作符