博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2584 T-Shirt Gumbo 构图 最大流
阅读量:5134 次
发布时间:2019-06-13

本文共 1674 字,大约阅读时间需要 5 分钟。

题意:acmer比赛穿的T-shirt 有 S M L X T五种型号,每个人穿的型号介于给出的两字母之间,五种 T-shirt 每种都有一定的数量,

问是否每个人都可以得到自己需要的型号

 

这个题。。。不评价。。。开始构图构错了,本想增加一个源点m,增加一个汇点,中间只要 T-shirt的5个点,如果有队员需要某种

 

 

T-shirt,该点与源点的连线就+1。某种T-shirt数量有多少,就把该点与汇点连线,权值为该T-shirt的数量,结果WA,好好考虑也是,

 

 

不画出错误的图了。 正确的思路,把人和T-shirt 都看成点,人和源点连线,权值为1,该队员再和需要的T-shirt 连线,权值为1,然后

 

 

T-shirt再与汇点连线,权值为数量。。。

 

 

代码:

 

       

//虽然点不多,由于构图原因,不能用矩阵map#include
#include
#include
#include
#include
#define inf 1<<30#define mMAX 300#define nMAX 30#define Min(a,b)a
0&&edge[e].w>0) { int tt=dfs(To,Min(temp,edge[e].w)); edge[e].w-=tt; edge[e^1].w+=tt; temp-=tt; } } return cap-temp;}bool bfs(){ queue
qu; memset(level,-1,sizeof(level)); level[0]=0; qu.push(0); while(!qu.empty()) { int tt=qu.front(); qu.pop(); for(int e=head[tt];e;e=edge[e].next) { int To=edge[e].to; if(level[To]==-1&&edge[e].w>0) { level[To]=level[tt]+1; qu.push(To); } } } if(level[t]!=-1)return 1; return 0;}int dinic(){ int SUM=0; while(bfs()) { SUM+=dfs(0,inf); } return SUM;}void init()//由于惯性,开始写的 ch2[0]-64,意思就是从A开始,太机械了! { a['S']=1; a['M']=2; a['L']=3; a['X']=4; a['T']=5; return ;}int main(){ init(); char ch1[20],ch2[3]; int i,j; while(~scanf("%s",ch1)) { if(!strcmp(ch1,"ENDOFINPUT")) break; memset(head,0,sizeof(head)); s_edge=1; scanf("%d",&n); t=n+6; for(i=1;i<=n;i++) { addedge(0,i,1); scanf("%s",ch2); int m1=ch2[0],m2=ch2[1]; for(j=a[m1];j<=a[m2];j++) addedge(i,j+n,1); } int num=0; for(i=1;i<=5;i++) { scanf("%d",&j); addedge(i+n,t,j); num+=j;//开始写的num++,晕死,不来动脑子的 } scanf("%s",ch1); if(num

  

  

转载于:https://www.cnblogs.com/sdau10kuaile/archive/2012/02/19/2357816.html

你可能感兴趣的文章
Redis之Redis事务
查看>>
4.10下午
查看>>
centos7安装MySql(yum方式)
查看>>
实现一个反向传播人工神经网络
查看>>
C语言下进制的使用
查看>>
凸优化
查看>>
iOS播放器 - AVPlayer
查看>>
小组互评Alpha版本
查看>>
实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
查看>>
Ajax CalendarExtender控件返回年+月
查看>>
百端前端学院17年培训之热身
查看>>
Oracle UNION和INTERSECT以及MINUS
查看>>
http协议的各类状态码
查看>>
教你如何在机器学习竞赛中更胜一筹(上)
查看>>
Scrapy学习-13-使用DownloaderMiddleware设置IP代理池及IP变换
查看>>
CentOS中配置lvm存储
查看>>
Python selenium 延时的几种方法
查看>>
C++ sort()函数的用法
查看>>
mybatis(数据库增删改查)
查看>>
Hibernate二级缓存问题
查看>>