SSL 2601 网络流——飞行员配对问题
来源:互联网 发布:淘宝买家秀怎么点赞 编辑:程序博客网 时间:2024/05/17 08:42
题目描述:
英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,试设计一个算法找出最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,编程找出一个最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。
输入格式:
第 1 行有 2 个正整数 m 和 n。n 是皇家空军的飞行员总数(n<100);m 是外籍飞行员数。外籍飞行员编号为 1~m;英国飞行员编号为 m+1~n。接下来每行有 2 个正整数 i 和 j,表示外籍飞行员 i 可以和英国飞行员 j 配合。最后以 2个-1 结束。
输出格式:
第 1 行是最佳飞行员配对方案一次能派出的最多的飞机数 M。
输入样例:
5 10
1 7
1 8
2 6
2 9
2 10
3 7
3 8
4 7
4 8
5 10
-1 -1
输出样例:
4
解题思路:
网络流(就是模版题,也没其他的^-^)。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 105
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
struct
{
queue<int>q;
int to,v,p;
}e[N*N*4];
void add(int x,int y,int z)
int n,m,c=1,last[N],d[N],s=0,t,cur[N],ans;
{
c++;
e[c].to=x; e[c].v=0; e[c].p=last[y]; last[y]=c;
e[c].to=y; e[c].v=z; e[c].p=last[x]; last[x]=c;
c++;
}
bool bfs()
{
memset(d,0,sizeof(d));
int u=q.front();
d[s]=1;
while(!q.empty()) q.pop();
q.push(s);
while(!q.empty())
{
q.pop();
d[e[i].to]=d[u]+1;
for(int i=last[u];i;i=e[i].p)
if(e[i].v&&!d[e[i].to])
{
if(e[i].to==t) return 1;
for(int &i=cur[x];i;i=e[i].p)
q.push(e[i].to);
}
}
return 0;
}
int dfs(int x,int maxf)
{
if(x==t||!maxf) return maxf;
int r=0;
r+=f;
if(e[i].v&&d[e[i].to]==d[x]+1)
{
int f=dfs(e[i].to,min(e[i].v,maxf-r));
e[i].v-=f;
e[i^1].v+=f;
if(r==maxf) break;
else printf("No Solution!");
}
return r;
}
void dinic()
{
while(bfs())
{
memcpy(cur,last,sizeof(cur));
ans+=dfs(s,INF);
}
if(ans!=0) printf("%d",ans);
}
int main()
{
add(i,n+1,1);
int x,y;
scanf("%d%d",&m,&n);
t=n+1;
scanf("%d%d",&x,&y);
while(x!=-1)
{
add(x,y,1);
scanf("%d%d",&x,&y);
}
for(int i=1;i<=m;i++)
add(0,i,1);
for(int i=m+1;i<=n;i++)
dinic();
}
return 0;
(其中 dinic错了很多次)
- SSL 2601 网络流——飞行员配对问题
- SSL 2601_网络流24题1 飞行员配对方案问题_网络流
- 网络流24题——飞行员配对方案问题
- 网络流24题1 飞行员配对方案问题 ssl 2601
- ssl 2601 飞行员配对方案问题
- 网络流 ~~飞行员配对方案问题
- 网络流1飞行员配对方案问题
- 【网络流】飞行员配对方案问题
- 网络流 飞行员配对方案问题
- 线性规划与网络流24题——01飞行员配对方案问题
- 网络流二十四题之一 —— 飞行员配对方案问题(AIR)
- 线性规划与网络流24——飞行员配对方案问题
- 网络流24题之T1——飞行员配对方案问题
- 二分图匹配——Luogu2756 [网络流24题]飞行员配对方案问题
- 最大流模板——飞行员配对方案问题
- [网络流24题 #1]飞行员配对方案问题
- 网络流24题之飞行员配对方案问题
- kyeremal-网络流24题T1-飞行员配对方案问题
- 通过TextSwitcher实现广告栏内容动画切换
- R柱状图,叠图(排序)
- DOS/BAT批处理if exist else 语句的几种用法
- 32、Power Query-利用自定义函数获取指定页数数据
- Linux中如何添加自己的路径为全局路径
- SSL 2601 网络流——飞行员配对问题
- 刘凯stm32教程第11讲总结
- 【SIP基础】SIP协议中网络角色定义
- c语言指针
- LAMP运行环境的简单搭建
- ORACLE 查询某个特定表 被当前数据库的哪些视图引用
- git tag
- linux c之main(int argc, char *argv[], char *envp[])参数意义
- linux 任务后台bg和fg命令