A country named Berland has n cities. They are numbered with integers from 1 to n. City with index 1 is the capital of the country. Some pairs of cities have monodirectional roads built between them. However, not all of them are in good condition. Fo…
最小树形图裸题,只是须要记录路径 E. Road Repairs time limit per test 2 seconds memory limit per test 256 megabytes input input.txt output output.txt A country named Berland has n cities. They are numbered with integers from 1 to n. City with index 1 is the capital o…
最小树形图+输出方案 输出方案的话记录一下哪些边 然后记得最后拆环要倒着拆就行了…
最小树形图的路径是在不断建立新图的过程中更新的,因此需要开一个结构体cancle记录那些被更新的边,保存可能会被取消的边和边在旧图中的id 在朱刘算法最后添加了一个从后往前遍历新建边的循环,这可以理解为回溯,通过cancle结构体不断找到上一个时间点更新的边id,并且取消那些被代替的边 至于为什么要按建图时间从后往前回溯,我在下面举了一个例子: 上图取自朱刘算法标准示例,最小树形图路径保存与更新 拿节点v3举例 指向v3的边有三条:a4,a13,a9 第一次循环:步骤1,2建立最短弧集:a4被保…
(点击此处查看原题) 题意 为了审判某一个人,需要在n个人当中选出m个人组成陪审团,n个人中每个人都有作为起诉方的价值p和作为辩护方的价值d,为了保证公平性,要求m个人作为起诉方的价值之和P和作为辩护方的价值之和D满足 |P-D| 最小,在此基础上,要求P+D最大.最后求P,D以及选出的作为陪审团的m个人并且这m个人的字典序最小. 解题思路 看懂题目后,很容易就可以发现这是一个背包问题,即是否选择第i个人当作陪审团,不过所选人数必须是m个,相比于01背包问题,这个题目限制了选择的人数,那么我们就…
最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1584    Accepted Submission(s): 388 Problem Description Innocent Wu follows Dum…
题目链接: 题目 Ice_cream's world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 问题描述 After awarded lands to ACMers, the queen want to choose a city be her capital. This is an important event in ice_cream world, and it a…
开始学习最小树形图,模板题. Ice_cream’s world II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) [Problem Description] After awarded lands to ACMers, the queen want to choose a city be her capital. This is an important event in…
---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其实这题是最小树形图 细节还是挺多了,,,感觉做了一天,,,, 表示做得有点失智,不想码字了,这里就放上我代码里的注释吧, 一些小细节和易错点代码里面也有详细注释,注意看error标注的地方就好了, 具体操作也有很多注释,,,(没错我就是一个喜欢打注释的人) 注意到一件事:优惠政策与买的件数无关,也就…
第一个部分 前4题 次小生成树 算法:首先如果生成了最小生成树,那么这些树上的所有的边都进行标记.标记为树边. 接下来进行枚举,枚举任意一条不在MST上的边,如果加入这条边,那么肯定会在这棵树上形成一个环,如果还要维护处树的特点 那么就要在这个环上删去一条边,这样他还是树,删掉的边显然是这条链上权值最大边更可能形成次小生成树.那么就有2中方法可以做. 第一种PRIM在prim时候直接可以做出这个从I到J的链上权值最大的值MAX[i][j]; 同时可以用kruskal同样方式标记树边,然后DFS跑…