3876: [Ahoi2014]支线剧情
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 684 Solved: 417
Description
【故事背景】
宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等。不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情。这些游戏往往
都有很多的支线剧情,现在JYY想花费最少的时间看完所有的支线剧情。
【问题描述】
JYY现在所玩的RPG游戏中,一共有N个剧情点,由1到N编号,第i个剧情点可以根据JYY的不同的选择,而经过不同的支线剧情,前往Ki种不同的新的剧情点。当然如果为0,则说明i号剧情点是游戏的一个结局了。
JYY观看一个支线剧情需要一定的时间。JYY一开始处在1号剧情点,也就是游戏的开始。显然任何一个剧情点都是从1号剧情点可达的。此外,随着游戏的进行,剧情是不可逆的。所以游戏保证从任意剧情点出发,都不能再回到这个剧情点。由于JYY过度使用修改器,导致游戏的“存档”和“读档”功能损坏了,
所以JYY要想回到之前的剧情点,唯一的方法就是退出当前游戏,并开始新的游戏,也就是回到1号剧情点。JYY可以在任何时刻退出游戏并重新开始。不断开始新的游戏重复观看已经看过的剧情是很痛苦,JYY希望花费最少的时间,看完所有不同的支线剧情。
Input
输入一行包含一个正整数N。
接下来N行,第i行为i号剧情点的信息;
第一个整数为,接下来个整数对,Bij和Tij,表示从剧情点i可以前往剧
情点,并且观看这段支线剧情需要花费的时间。
Output
输出一行包含一个整数,表示JYY看完所有支线剧情所需要的最少时间。
Sample Input
6
2 2 1 3 2
2 4 3 5 4
2 5 5 6 6
0
0
0
Sample Output
24
HINT
JYY需要重新开始3次游戏,加上一开始的一次游戏,4次游戏的进程是
1->2->4,1->2->5,1->3->5和1->3->6。
对于100%的数据满足N<=300,0<=Ki<=50,1<=Tij<=300,Sigma(Ki)<=5000
Source
By 佚名上传
对于每一条边权为z的边x->y:
从S到y连一条费用为z,流量为1的边 代表这条边至少走一次
从x到y连一条费用为z,流量为INF的边 代表这条边除了至少走的一次之外还可以随便走
对于每个点x:
从x到T连一条费用为0,流量为x的出度的边
从x到1连一条费用为0,流量为INF的边,代替原图上的源和汇
自己yy的建图不成功。。此题看的题解。。
不过熟悉了一下有下界有源汇的最小费用流。。
附上本蒟蒻的代码:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define inf 0x7fffffff
#define MAXN 90001
int n,cnt=1,head,tail,ans,sum,h[MAXN],dis[MAXN],q[MAXN],T;
bool mark[MAXN],vis[MAXN];
struct kx
{int to,next,v,c;
}edge[MAXN];int read()
{int w=0,c=1; char ch=getchar();while (ch<'0' || ch>'9'){if (ch=='-') c=-1;ch=getchar();}while (ch>='0' && ch<='9')w=w*10+ch-'0',ch=getchar();return w*c;
}void add(int u,int v,int w,int cost)
{cnt++,edge[cnt].next=h[u],h[u]=cnt,edge[cnt].to=v,edge[cnt].v=w,edge[cnt].c=cost;cnt++,edge[cnt].next=h[v],h[v]=cnt,edge[cnt].to=u,edge[cnt].v=0,edge[cnt].c=-cost;
}bool spfa()
{int i,now;memset(vis,false,sizeof(vis));for (i=0;i<=n+1;i++) dis[i]=inf;head=0,tail=1,q[0]=T,vis[T]=true,dis[T]=0;while (head<tail){now=q[head],head++,vis[now]=false;for (i=h[now];i;i=edge[i].next)if (edge[i^1].v && dis[now]-edge[i].c<dis[edge[i].to]){dis[edge[i].to]=dis[now]-edge[i].c;if (!vis[edge[i].to])vis[edge[i].to]=true,q[tail++]=edge[i].to;}}return dis[0]!=inf;
}int dfs(int x,int f)
{int w,used=0,i;mark[x]=true;if (x==T) return f;for (i=h[x];i;i=edge[i].next)if (dis[edge[i].to]==dis[x]-edge[i].c && edge[i].v && !mark[edge[i].to]){w=f-used,w=dfs(edge[i].to,min(w,edge[i].v)),ans+=w*edge[i].c;edge[i].v-=w,edge[i^1].v+=w,used+=w;if (used==f) return f;}return used;
}int main()
{int i,k,j,x,y;n=read();T=n+1;for (i=1;i<=n;i++){k=read();for (j=1;j<=k;j++)x=read(),y=read(),add(0,x,1,y),add(i,x,inf,y);add(i,T,k,0);if (i!=1) add(i,1,inf,0);}while (spfa()){mark[T]=true;while (mark[T]){memset(mark,false,sizeof(mark));sum+=dfs(0,inf);}}printf("%d",ans);return 0;
}

BZOJ3876支线剧情相关推荐

  1. 【BZOJ3876】[Ahoi2014]支线剧情 有上下界费用流

    [BZOJ3876][Ahoi2014]支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩 ...

  2. 刷题总结——支线剧情(bzoj3876费用流)

    题目: [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现在JYY想花费最 ...

  3. 【bzoj3876】【AHOI2014】【支线剧情】【有上下界的费用流】

    Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现 ...

  4. [BZOJ3876][AHOI2014]支线剧情-有下界的最小费用流

    支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支 ...

  5. [AHOI2014/JSOI2014]支线剧情

    [AHOI2014/JSOI2014]支线剧情 有n个剧情点,对于第i个剧情点有ki个分支,分别通往tij剧情点,耗费时间为bij.从1号点开始,可以从任何节点返回1号点,要遍历所有的边的最少耗费时间 ...

  6. BZOJ 3876 支线剧情

    支线剧情 [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往都有很多的支线剧情,现在JYY想花费最 ...

  7. 有下界的最小费用可行流2.0(bzoj 3876: [Ahoi2014]支线剧情)

    什么是有下界的最小费用可行流? 平时来讲都是最小费用最大流,也就是在满流的前提条件下费用尽可能的少,而最小费用可行流一般不要求满流,但是每条边都有最小流量要求(比如经过边e(u,v)的流量不能少于4等 ...

  8. 支线剧情-上下界网络流

    支线剧情-上下界网络流 题目描述 题解 有源汇有上下界最小费用可行流 答案即为:新图中求出的费用+++原图中边的下界∗*∗边的费用 上下界网络流推荐博客: 1,https://blog.csdn.ne ...

  9. 3876: [Ahoi2014Jsoi2014]支线剧情

    Description 提交luogu bzoj [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往 ...

最新文章

  1. windows上通过cmake-gui生成pytorch工程
  2. 《认知设计:提升学习体验的艺术》——学习者喜欢什么
  3. 请求令牌 接口_时序图说明JWT用户认证及接口鉴权的细节
  4. 高铁转地铁不想重复安检?多地已有举措
  5. INFORMATICA 的部署实施之 BACKUPRESTORE
  6. 文献学习(part8)--A community detection algorithm based on graph compression...
  7. linux安装tomcat Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  8. unix 登录mysql_实例分析mysql用户登录。
  9. 互联网日报 | 3月21日 星期日 | 贾玲成全球票房最高女导演;顺丰全货机数量增至64架;东京奥运会不接待国外观众...
  10. oracle ola_Ola HallengrenSQL Server维护解决方案–安装和SQL Server备份解决方案
  11. mips32和x86下的大小端模式判定
  12. lodop 调用打印机打印条码
  13. 怎么用ai做出适量插画_用AI打造矢量人像插画
  14. UI自动化框架 基于selenium+pytest和PO分层思想
  15. Adaboost算法介绍
  16. 华为笔试题2020(3月11日)
  17. 调试SQL SERVER存储过程
  18. vue 根据字符串生成表单_vue自定义表单生成器,可根据json参数动态生成表单
  19. 苹果XS怎么截屏_可怜的果粉,安卓有这功能快十年之后,苹果发布竟让果粉一片欢呼...
  20. 智能车大赛信标组_【学院新闻】第四届福建省智能汽车竞赛圆满落幕

热门文章

  1. android studio编译app,Android Studio编译项目报错
  2. qt类似电视盒子的通过方向键切换焦点的实现方法
  3. 系统集成项目管理工程师学习建议
  4. Qt在线安装器下载快的办法
  5. Inno Setup选择语言并写入配置文件、翻译提示信息
  6. 关于用ANSYS有限元仿真软件划分网格的一些体验
  7. CAD 二次开发 图层操作(3)取得指定图层下的所有对象id
  8. 办公室计算机联机,两台电脑怎样联机?
  9. c语言规定的主函数名是,C语言源程序中主函数名由系统规定为_______,程序员是不能改变的。...
  10. Oracle 压缩表与压缩表空间