POJ 3013 Dijkstra】的更多相关文章

从1节点最短路,,然后再乘一下权值就OK了 //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 132000 long long d[N]; int n,m,first[N],next[N],v[N],w[N],tot,a[N],xx,yy,zz,cases; bool…
POJ 3013 Big Christmas Tree(最短路Dijkstra+优先队列优化,SPFA) ACM 题目地址:POJ 3013 题意:  圣诞树是由n个节点和e个边构成的,点编号1-n.树根为编号1,选择一些边.使得全部节点构成一棵树.选择边的代价是(子孙的点的重量)×(这条边的价值). 求代价最小多少. 分析:  单看每一个点被计算过的代价,非常明显就是从根到节点的边的价值.所以这是个简单的单源最短路问题. 只是坑点还是非常多的. 点的数量高达5w个,用矩阵存不行.仅仅能用边存.…
题目传送门 题意:找一棵树使得造价最少,造价为每个点的子节点造价和*边的造价和 分析:最短路跑出1根节点到每个点的最短边权值,然后每个点的权值*最短边距和就是答案,注意INF开足够大,n<=1特判.Dijkstra 和 SPFA都行 代码: #include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <vector> #includ…
http://poj.org/problem?id=3013 Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 19009   Accepted: 4048 Description Christmas is coming to KCM city. Suby the loyal civilian in KCM city is preparing a big neat Christmas…
http://poj.org/problem?id=2387 一个dijkstra的模板题 #include <stdio.h> #include <string.h> #define inf 999999; ][ ]; ]; int m,n; void dijkstra() { ],k,Min; ]; ; i <= n ; i++) //对d[i]进行初始化 { mark[ i ] = false; d[ i ] = graph[ ][ i ]; } ; i <= n…
http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚举等级是怎样枚举,因为我觉得在递归的时候,我真的不知道怎么枚举等级. 然后今天在看到了一个人写的,枚举等级怎么枚举,我才发现我用那个搜索写的话,我还是有问题.所以我就用这个新学的dijkstra写 所谓的枚举等级,就是以每一个等级都视为最低等级来进行枚举. 比如等级限制1,而那个酋长的等级是3,那么…
题目链接:http://poj.org/problem?id=2253 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离. 现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离. 思路: j从1,2,两条路中选取较小者,而1这条路,是s—>k—>j的最大步伐. #include <stdio.h&g…
题目链接:http://poj.org/problem?id=1797 题意:从路口1运货到路口n,最大的运货重量是多少?题目给出两路口间的最大载重. 思路:j加到s还是接到K下面,取两者的较大者,而使得载重量较大,而接到k下面,载重量是dis[k]和maps[k][j]的较小者. #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; #define INF 0x…
hdu 2544  求点1到点n的最短路  无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 堆优化Dijstra模板 # include <iostream> # include <cstdio> # include <cstring> # include <algorithm> # include <cmath> # include &…
http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树上每条边*子树中各顶点的权值. 思路:转化一下,发现每条边*子树中各定点的权值=各个点*点到根的最短路,于是转化成了root到各个点的最短路,又到不了的点则说明无法建树. #pragma comment(linker, "/STACK:36777216") #pragma GCC opti…