Highway Project


Time Limit: 2 Seconds      Memory Limit: 65536 KB


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 Ci dollars. It takes Di minutes to travel between cityXi and Yi 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 T indicating the number of test cases. For each test case:

The first contains two integers NM (1 ≤ NM ≤ 105).

Then followed by M lines, each line contains four integers XiYiDiCi (0 ≤ XiYi < N,
0 < DiCi < 105).

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.

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

Sample Output

4 3

4 4

Dijkstra 用优先队列 ,用邻接表建立图,注意要long long int。比赛最后一分钟发现数组没有long long int. 还有在更新s数组的

要加等号,
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <string>
#include <stdio.h>
#include <queue> using namespace std;
const long long int INF=1000000000000000;
#define MAX 100000
struct Node
{
int value;
int next;
long long int time;
long long int cost;
}edge[MAX*2+5];
struct Node2
{
int time;
int cost;
int value;
Node2(){};
Node2(int time,int cost,int value)
{
this->time=time;
this->cost=cost;
this->value=value;
}
friend bool operator<(Node2 a,Node2 b)
{
if(a.time==b.time)
return a.cost>b.cost;
return a.time>b.time;
}
};
int cot;
int head[MAX+5];
int vis[MAX+5];
long long int s[MAX+5];
long long int ans1;
long long int ans2;
int n,m;
void add(int x,int y,long long int time,long long int cost)
{
edge[cot].value=y;
edge[cot].next=head[x];
edge[cot].time=time;
edge[cot].cost=cost;
head[x]=cot++;
}
void Dijkstra()
{
priority_queue<Node2> q;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
s[i]=INF;
s[0]=0;
q.push(Node2(0,0,0));
while(!q.empty())
{
Node2 term=q.top();
q.pop();
if(vis[term.value]) continue;
vis[term.value]=1;
ans2+=term.cost;
int a=head[term.value];
while(a!=-1)
{
if(s[edge[a].value]>=s[term.value]+edge[a].time)
{
s[edge[a].value]=s[term.value]+edge[a].time;
q.push(Node2(s[edge[a].value],edge[a].cost,edge[a].value));
}
a=edge[a].next;
}
}
}
int main()
{
int t;
scanf("%d",&t);
int x,y;
long long int xx,yy;
while(t--)
{
scanf("%d%d",&n,&m);
memset(head,-1,sizeof(head));
cot=0;
for(int i=1;i<=m;i++)
{
scanf("%d%d%lld%lld",&x,&y,&xx,&yy);
add(x,y,xx,yy);
add(y,x,xx,yy);
}
ans1=0;ans2=0;
Dijkstra();
for(int i=1;i<n;i++)
ans1+=s[i];
printf("%lld %lld\n",ans1,ans2); }
return 0;
}

ZOJ 3946 Highway Project(Dijkstra)的更多相关文章

  1. ZOJ 3946.Highway Project(The 13th Zhejiang Provincial Collegiate Programming Contest.K) SPFA

    ZOJ Problem Set - 3946 Highway Project Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward, the ...

  2. zoj 3946 Highway Project(最短路 + 优先队列)

    Highway Project Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward, the emperor of the Marjar ...

  3. ZOJ 3946 Highway Project 贪心+最短路

    题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3946 题解: 用dijkstra跑单元最短路径,如果对于顶点v,存 ...

  4. ZOJ 3946 Highway Project

    1.迪杰斯特拉最小堆 #include<cstdio> #include<cstring> #include<cmath> #include<map> ...

  5. ZOJ 3946 Highway Project (最短路)

    题意:单源最短路,给你一些路,给你这些路的长度,给你修这些路的话费,求最短路和最小花费. 析:本质就是一个最短路,不过要维护两个值罢了,在维护花费时要维护的是该路要花多少,而不是总的路线花费. 代码如 ...

  6. (spfa) Highway Project (zoj 3946 )

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5718   Highway Project Time Limit: 2 Seco ...

  7. ZOJ3946:Highway Project(最短路变形)

    本文转载自:http://www.javaxxz.com/thread-359442-1-1.html Edward, the emperor of the Marjar Empire, wants ...

  8. ZOJ-3946 Highway Project (最短路)

    题目大意:一张带权无向图,权有两个参数(d,c),分别表示走过这条边的时间和建造这条边的代价.要求选出一些边,使得0节点到其他点的距离之和最短,并在最短的基础上求最小代价. 题目分析:这是16年浙江省 ...

  9. The 13th Zhejiang Provincial Collegiate Contest(2016年浙江省赛)

      前4道水题就不说了,其中我做了C题,1Y,小心仔细写代码并且提交之前得确认无误后提交才能减少出错率. 结果后面2题都由波神做掉,学长带我们飞~ 终榜 官方题解   ZOJ 3946 Highway ...

随机推荐

  1. LNMP架构三

    Nginx代理(正向代理) 正向代理:让局域网内的用户 访问外网,外网不能访问局域网, 场景:如果要从国内访问美国的服务器会很慢,这时候就可以找个香港服务器做代理,香港访问美国是很快的. 代理服务器作 ...

  2. 阿里云Ubuntu部署java web - 文件夹

    文件夹(点击章节标题阅读): 阿里云Ubuntu部署java web(1) - 系统配置         ssh链接server(使用终端远程链接)        加入用户        给用户赋予运 ...

  3. Python sklearn 分类效果评估

    https://blog.csdn.net/sinat_26917383/article/details/75199996

  4. 使用Apache Jmeter进行并发压力测试

    http://blog.jassassin.com/2014/04/17/tools/jmeter/

  5. spring mvc接收参数方式,json格式返回请求数据

    1 使用方法形参使用变量接收提交的数据 2 在方法的形参中使用模型接收数据 3 如果在提交的表单中有多个数据模型,需要创建一个新的Bean,里面的属性是要接收的对象变量. 4 接收提交的日期字符串,转 ...

  6. 基于FPGA的DDR3多端口读写存储管理系统设计

    基于FPGA的DDR3多端口读写存储管理系统设计 文章出处:电子技术设计 发布时间: 2015/03/12 | 1747 次阅读 每天新产品 时刻新体验专业薄膜开关打样工厂,12小时加急出货   机载 ...

  7. VS编译duilib项目时候的错误解决方法整理

    @1:找不到Riched20.lib 用everything等软件搜索下磁盘.找到所在的文件夹加入到vs的库文件夹就可以.我得是C:\Program Files (x86)\Microsoft SDK ...

  8. NiftyNet 项目了解

    1. NiftyNet项目概述 NiftyNet项目对tensorflow进行了比较好的封装,实现了一整套的DeepLearning流程.将数据加载.模型加载,网络结构定义等进行了很好的分离,抽象封装 ...

  9. spring mvc中拦截器配置mvc:interceptors

    其实在mvc:interceptors标签中,有两种类型的配置,一种直接配置一个bean(bean和ref归为一类),另一种还要配置上拦截的路径和排除的路径.直接配置的bean那就代表对所有的请求进行 ...

  10. love2d教程34--thread模块

    love的thread是一个单独的lua运行环境,与主线程平行.因此可以用线程来处理 处理复杂的计算,不过由于隔离,线程不能访问主线程的变量和方法,而且进程 间通信也受限.   可以在线程里共享lov ...