ZOJ3946:Highway Project(最短路变形)
本文转载自:http://www.javaxxz.com/thread-359442-1-1.html
Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can reach other cities from the capital as fast as possible. Thus, he proposed the highway project.
The Marjar Empire has N cities (including the capital), indexed from 0 to N - 1 (the capital is 0) and there are M highways can be built. Building the i-th highway costs C[sub]i[/sub] dollars. It takes D[sub]i[/sub] minutes to travel between city X[sub]i[/sub] and Y[sub]i[/sub] on the i-th highway.
Edward wants to find a construction plan with minimal total time needed to reach other cities from the capital, i.e. the sum of minimal time needed to travel from the capital to city i (1 ≤ i ≤ N). Among all feasible plans, Edward wants to select the plan with minimal cost. Please help him to finish this task.Input
There are multiple test cases. The first line of input contains an integer Tindicating the number of test cases. For each test case:
The first contains two integers N, M (1 ≤ N, M ≤ 10[sup]5[/sup]).
Then followed by M lines, each line contains four integers X[sub]i[/sub], Y[sub]i[/sub], D[sub]i[/sub], C[sub]i[/sub] (0 ≤ X[sub]i[/sub], Y[sub]i[/sub] < N, 0 < D[sub]i[/sub], C[sub]i[/sub] < 10[sup]5[/sup]).<h4< dd="">Output
For each test case, output two integers indicating the minimal total time and the minimal cost for the highway project when the total time is minimized.<h4< dd="">Sample Input
- 2
- 4 5
- 0 3 1 1
- 0 1 1 1
- 0 2 10 10
- 2 1 1 1
- 2 3 1 2
- 4 5
- 0 3 1 1
- 0 1 1 1
- 0 2 10 10
- 2 1 2 1
- 2 3 1 2
复制代码
<h4< dd="">Sample Output
- 4 34 4
复制代码
题意:给一个图,每条边有个距离和花费,要求创建一个子图,满足0点到其余点的距离总和最小,且边的总花费最小。
思路:条件一,每个点贪心的都选最短路就是最优解,条件二,类似最小生成树的kruskal算法,在条件一的基础上更改下松弛条件即可。
拓展:CF545E,求距离总和最小,且总的边的长度最小,其实那题也是类似最短路基础上跑最小生成树。
- # include <iostream># include <cstdio># include <cstring># include <queue>using namespace std;const int maxn = 2e5+30;long long dis[maxn], cost[maxn], x, y;int vis[maxn], Next[maxn], cnt;struct node{int u, v, w, c, next;}edge[maxn];queue<int>q;int scan(){ int res=0,ch,flag=0; if((ch=getchar())=="-") flag=1; else if(ch>="0"&&ch<="9") res=ch-"0"; while((ch=getchar())>="0"&&ch<="9") res=res*10+ch-"0"; return flag?-res:res;}void out(long long x){ if(x/10) out(x/10); putchar("0"+x%10);}void add(int u, int v, int w, int c){ edge[cnt] = {u, v,w,c,Next[u]};; Next[u] = cnt++; edge[cnt] = {v, u,w,c,Next[v]}; Next[v] = cnt++;}void spfa(){ memset(dis, 0x3f, sizeof(dis)); memset(cost, 0x3f, sizeof(cost)); memset(vis, 0, sizeof(vis)); while(!q.empty()) q.pop(); q.push(1); dis[1] = cost[1] = 0; while(!q.empty()) { int u = q.front(); q.pop(); vis[u] = 0; for(int i=Next[u]; ~i; i=edge[i].next) { int v=edge[i].v, w=edge[i].w, c=edge[i].c; if(dis[v] > dis[u]+w) { dis[v] = dis[u]+w; cost[v] = c; if(!vis[v]) { vis[v] = 1; q.push(v); } } else if(dis[v] == dis[u]+w) { if(cost[v] > c) { cost[v] = c; if(!vis[v]) { vis[v] = 1; q.push(v); } } } } }}int main(){ int t, n, m, u, v, w, c; t=scan(); while(t--) { x = y = cnt = 0; memset(Next, -1, sizeof(Next)); n=scan();m=scan(); for(int i=1; i<=m; ++i) { u=scan();v=scan();w=scan();c=scan(); add(u+1,v+1,w,c); } spfa(); for(int i=2; i<=n; ++i) { x += dis[i]; y += cost[i]; } out(x); putchar(" "); out(y); puts(""); } return 0;}
复制代码
ZOJ3946:Highway Project(最短路变形)的更多相关文章
- zoj 3946 Highway Project(最短路 + 优先队列)
Highway Project Time Limit: 2 Seconds Memory Limit: 65536 KB Edward, the emperor of the Marjar ...
- ZOJ - 3946-Highway Project(最短路变形+优先队列优化)
Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can ...
- ZOJ-3946 Highway Project (最短路)
题目大意:一张带权无向图,权有两个参数(d,c),分别表示走过这条边的时间和建造这条边的代价.要求选出一些边,使得0节点到其他点的距离之和最短,并在最短的基础上求最小代价. 题目分析:这是16年浙江省 ...
- ZOJ 3946 Highway Project (最短路)
题意:单源最短路,给你一些路,给你这些路的长度,给你修这些路的话费,求最短路和最小花费. 析:本质就是一个最短路,不过要维护两个值罢了,在维护花费时要维护的是该路要花多少,而不是总的路线花费. 代码如 ...
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Description Background Hugo ...
- POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...
- (spfa) Highway Project (zoj 3946 )
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5718 Highway Project Time Limit: 2 Seco ...
随机推荐
- ubuntu Emergency Mode
sudo fsck -y /dev/sda# e2fsck -f -y -v -C 0 /dev/sda#
- static_cast, dynamic_cast, const_cast 类型转换如何使用?
static_cast 用法:static_cast < type-id > ( expression ) 说明:该运算符把expression转换为type-id类型,但没有运行时类型检 ...
- Spark SQL1.2与HDP2.2结合
1.hbase相同的rowkey里存在多条记录问题的调研解决方案 VERSIONS => 3,Hbase version 最多插入三条记录 将一个集群hbase中表 "Vertical ...
- TensorFlow与主流深度学习框架对比
引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平台上横扫中日韩围棋高手,取得60连胜,未尝败绩.AlphaGo背后神秘的推动力就是TensorFlow--Google于2015年 ...
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到 ...
- NLP+VS=>Image Caption︱自动生成图像标题技术论文+相关项目
读聪明人的笔记,是不是也能变聪明呢? Image Caption是一个融合计算机视觉.自然语言处理和机器学习的综合问题,它类似于翻译一副图片为一段描述文字. Image Caption问题可以定义为二 ...
- 网络请求的Cookie组成
Cookie是由变量名和值对组成(key,value).其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用"变量=值"形式来保存.根据Netscape公司的 ...
- 决策树系列(四)——C4.5
预备知识:决策树.ID3 如上一篇文章所述,ID3方法主要有几个缺点:一是采用信息增益进行数据分裂,准确性不如信息增益率:二是不能对连续数据进行处理,只能通过连续数据离散化进行处理:三是没有采用剪枝的 ...
- 页面jquery调试的一个宝贵经验(类似于Eclipse中的写出一个对象点它的方法时候用alt加/可以跳出来它所有的方法)
案例讲解 一,html片段 <div class="page-upload"> <div class="tab-wrapper2"> & ...
- 原生JS实现tab切换--web前端开发
tab切换非常常见,应用非常广泛,比较实用,一般来说是一个网站必不可少的一个效果.例如:https://123.sogou.com/中的一个tab部分: 1.案例源代码 <!DOCTYPE ht ...