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. C++设计模式之适配器模式(三)

    4.适配器模式总结 在对象适配器模式中.适配器与适配者之间是关联关系:在类适配器模式中.适配器与适配者之间是继承关系.不论是对象适配器还是类适配器.适配器模式都将现有接口转化为客户类所期望的接口.实现 ...

  2. HDOJ 5418 Victor and World 状压DP

    水状压DP Victor and World Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java ...

  3. 使用intelliJ IDE开发java web项目

    <!-- spring版本号 --> <spring.version>4.3.0.RELEASE</spring.version> <!-- mybatis版 ...

  4. IDirect3DDevice9::SetTexture的stage参数

    HRESULT IDirect3DDevice9::SetTexture(DWORD Stage, IDirect3DBaseTexture9 *pTexture) 其中Stage并不是“阶段”的意思 ...

  5. JS prototype 属性

    String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, "");}

  6. POJ 2409 Let it Bead(Polya简单应用)

    Let it Bead 大意:给你m种颜色,n个珠子串起来.旋转跟反转同样算同样,问有多少种不同的涂色组合方式. 思路:Polya的简单应用. /*************************** ...

  7. python操作sqlserver

    # coding=gbk import sys   import pymssql #尝试数据库连接 try:     conn = pymssql.connect(host="192.168 ...

  8. 字符串操作:int 转 string

    strstream ss; string ch; ss<<i; ss>>ch;

  9. 阿里正式发布《Java开发手册》终极版!

    摘要: 本文讲的是阿里正式发布<Java开发手册>终极版!,别人都说我们是码农,但我们知道,自己是个艺术家.也许我们不过多在意自己的外表和穿着,但我们不羁的外表下,骨子里追求着代码的美.质 ...

  10. php调用c语言编写的so动态库

    from http://blog.csdn.net/wzhwho/article/details/6949297 PHP除了使用扩展库的方式调用c函数,还可以通过socket通信的方式.这里介绍前者. ...