HDU5521-最短路-建图】的更多相关文章

/* 思前想后 还是决定坚持写博客吧... 题意: n个点,m个集合.每个集合里边的点是联通的且任意两点之间有一条dis[i]的边(每个集合一个dis[i]) 求同时从第1个点和第n个点出发的两个人相遇的最短时间,并输出相遇的地点,如果有多个按编号大小顺序输出. 输入: 测试数据 t n m 以下m行每行 dis[i] 该集合点的数量 ...每个点的标号 数据范围: n 2-1e5 所有集合的元素的数量和 1e6 思路: 如果直接跑最短路,边会存爆的. 考虑换种思路建边. 每个集合看作两个点,一…
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297574.html      ---by 墨染之樱花 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题目描述:给一张图,每个点(1~N)都属于一个层(1~N),比如点1在第5层,点3在第4层,点4也在第5层.任何在x层的点都可以移动到x+1层和x-1层中的任何点上,并且需要耗费C的权值.除此之外,另外再给出M条带权无向边.求点1到点…
<题目链接> 题目大意: 有n座城市,每一个城市都有一个听演唱会的价格,这n座城市由m条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值=所看演唱会的价值+该城市的人去那个城市看演唱会的往返距离之和). 解题分析:比较好的一道最短路题,主要考察建图能力.我们不妨建立一个虚拟源点,然后该源点向所有的边都连上一条无向边,边权为对应点的点权.然后所有的点之间通过m条边连接,只不过边权设为2倍原边权.最后就是从源点跑一遍最短路,就能得到每个城市的人能够…
Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 4542    Accepted Submission(s): 1436 Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farmer Jo…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 375    Accepted Submission(s): 98 Problem Description Innocent Wu follows Dumb Zh…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11694    Accepted Submission(s): 2537 Problem Description This is a very easy problem, your task is just calculate…
C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 94  Solved: 25 [Submit][Status][Web Board] Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地…
The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. Input Format 第一行包含一个正整数n(2<=n<=200000),表示点数. 接下来n行,每行包含两个整数xi,yi(0<=xi,yi<=10^9),依次表示每个点的坐标. Output Format 一个整数,即最小费用. Sample Input 5 2 2 1…
本题思路:主要是建图比较麻烦,因为结点可以在层与层之间走动,也可以在边上进行走动,所以主要就是需要找到一个将结点和层统一化处理的方法. 所以我们就可以对于存在边的结点建边,层与层之间如果层数相差一也建一条权值为c的边,相同层数之间的也建一条权值为零的边,接着Dijkstra即可. 参考代码:spfa超时了,所以就改成了Dijkstra. #include <cstdio> #include <cstring> #include <queue> using namespa…
好久没有1A题啦♪(^∇^*) 一个sb建图,我居然调样例调了10min 看起来是双向边,其实在建图的时候要当成有向图, 否则他会时间倒流(233) 把每个点裂成k个点,然后把每条边裂成4条边(正向反向&膜不膜) (话说我好像不会用openlivewriter贴代码,尴尬了) #include <bits/stdc++.h> #define poi(x,y) ((x)*(k+1)+(y)) #define st poi(1,0) #define INF 2000000000 using…