题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5718

题意:

有n个点 m(n,m<=10^5)条路,现在要建路,每条路连接uv两个点,所需时间是time花费是cost,现要求从0点到达其他点的,让时间和最小,当有多种选择时要求修路的总花费最小,输出最小时间及花费;

可以看成最短路问题

我们定义两个数组Time[i]表示从起点到 i 点所需的最小时间,Cost[i]表示到达 i 的那个点 u 到 i 的最小花费;其实就相当于是最短路中的dist和最小生成树中的dist

需要注意的是,本题数据超int了,所以初始化的时候要注意最大值的值;

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
#define N 100050
typedef long long LL;
const LL INF = (1ll<<)-;
struct node
{
int v;
LL cost, time;
node(int v0=, LL c=, LL t=) : v(v0),cost(c), time(t){}
}; vector<vector<node> >G;
int n, vis[N];
LL Cost[N], Time[N]; void SPFA()
{
for(int i=; i<n; i++)
{
Cost[i] = Time[i] = INF;
vis[i] = ;
}
Cost[] = Time[] = ; queue<int>Q;
Q.push(); while(Q.size())
{
int p = Q.front(); Q.pop(); vis[p] = ; int len = G[p].size();
for(int i=; i<len; i++)
{
node q = G[p][i];
if(Time[q.v] > Time[p]+q.time || (Time[q.v]==Time[p]+q.time&&Cost[q.v]>q.cost))
{
Time[q.v] = Time[p]+q.time;
Cost[q.v] = q.cost;
if(!vis[q.v])
{
vis[q.v] = ;
Q.push(q.v);
}
}
}
}
LL TimeSum = , CostSum = ;
for(int i=; i<n; i++)
{
TimeSum += Time[i];
CostSum += Cost[i];
}
printf("%lld %lld\n", TimeSum, CostSum);
} int main()
{
int T, m;
//cout<<INF;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &n, &m);
G.clear();
G.resize(n+); for(int i=; i<m; i++)
{
int u, v;
LL cost, time;
scanf("%d %d %lld %lld", &u, &v, &time, &cost);
G[u].push_back(node(v, cost, time));
G[v].push_back(node(u, cost, time));
} SPFA();
}
return ;
}

Highway Project---zoj3946(最短路SPFA)的更多相关文章

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

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

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

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

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

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

  4. (spfa) Highway Project (zoj 3946 )

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

  5. 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 ...

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

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

  7. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

  8. ZOJ 3946 Highway Project(Dijkstra)

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

  9. L - Subway(最短路spfa)

    L - Subway(最短路spfa) You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. In ...

随机推荐

  1. 扫盲:java中关于路径的问题

    ../FileName:当前工程的上级目录. ./FileName:当前工程所在的目录. /FileName:当前工程所在磁盘的根目录(windows下). FileName:当前工程所在的目录.

  2. c#后台常用知识

    生成如:2015-10-25T12:12:12格式的时间 DateTime.Now.ToString("s") 非asp.net mvc环境下对url编码 (HttpUtility ...

  3. 【Java面试题】14 super.getClass()方法调用

    下面程序的输出结果是多少? import java.util.Date; public class Test extends Date{ public static void main(String[ ...

  4. html5移动端根据百度地图api获取详细地址

    <script type="text/javascript" src="js/BMap.js" ></script> <scrip ...

  5. App 应用通过网页打开 App Store

    NSURL *url = nil; if ([[[UIDevice currentDevice] systemVersion] intValue] >= 7.0) { //iOS7 使用旧的网址 ...

  6. SharePoint 2013 设置customErrors显示实际的错误信息

    一.首先设置IIS中的Web.config文件 找到对应的IIS应用程序目录,如:C:\inetpub\wwwroot\wss\VirtualDirectories\3000 在此文件夹下包含一个we ...

  7. sql 字符串操作

    SQL Server之字符串函数   以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...

  8. oracle中的内连接和外连接区别

    表t_user1,t_user2,t_user3,各有id,name两列 id name 1 10A 2 20A id name 1 10B 3 30B id name 1 10C 4 40C 连接分 ...

  9. /etc/hostname

    我们可以使用 hostname 命令来修改主机名,但只是临时生效,如果想永久生效可以编辑 /etc/hostname 文件,注意不是每个 Linux 发行版都有该文件 root@Ubuntu_Lee: ...

  10. C文件流

    在Linux系统中,系统默认认为每个进程打开了3个文件,即每个进程默认可以操作3 个流,即标准输入了流(/dev/stdin),标准输出流(/dev/stdout),标准错误输出流(/dev/stde ...