题目大意:
给出一个图,一个源点s,问距离这个源点的最短距离恰好为 l 的点有多少个(这个点可以在边上,可以在节点上)。
做法:
首先用dijkstra算法求出每个节点到s的最短路d[]数组,然后对于每条边w(u,v)来说有下面三种情况是合法的:
1:d[u]l
2:d[v]l
3:d[v]
对于上面每种情况,ans++,另外每个d[i]==l 的...
分类:
其他好文 时间:
2014-08-31 15:55:01
阅读次数:
182
题意:
给出一张图和图上的一个顶点,求距离这个点距离为s(最短距离)的顶点或边上的点总共有几个(边上的点要保证也是最短距离)
分析:
先用DIJ求出最短路
然后对所有顶点,距离为s的点都算上
枚举每条边
边上的两个顶点如果距离不够,则看在边上能不能找到一个点,顶点上的距离加上这个顶点到点的距离能为s(注意保证这个距离是最小距离(即这个点通过另外一端的顶点距离源点的距离小...
分类:
其他好文 时间:
2014-08-31 15:54:01
阅读次数:
190
人活着系列之芳姐和芳姐的猪
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
百年来,人活着是为了什么这个问题一直萦绕在人的脑海里,也一直困扰着人的思想。人活着就是活着了,为活着本身而活着,而不是为活着之外的任何事物而活着的。正因为活着,所以活着。对,是有点莫明其妙,但也是一句最受用的话。
m个猪圈...
分类:
其他好文 时间:
2014-08-30 17:50:39
阅读次数:
259
这题的关键是把车站的名字转化为点的编号。我用的是map。声明一个map st,然后按照字符串出现的次序给st赋值。例如:st[s1]=2;代表这字符串s1出现的次序是2。出现过的已经被标记。不会重复。接下来用模版就好。不过有一点要注意的是当起点和终点一样是,要输出0。#include#inclu.....
分类:
其他好文 时间:
2014-08-30 17:34:19
阅读次数:
173
最近在看图论的经典算法,
先看的是求单源最短路的dijkstra,优化后的算法用了优先队列,看起来有点复杂。
感觉 弗洛伊德(Floyd) 要比 迪克斯特拉(dijkstra) 更好理解一点,但是Floyd是三层循环,当然会慢很多。一旦数据开大就跪了吧。
floyd可以用来求 两个 连通点间的最短路问题。同时可以得到边权的和,即最短路的长度。
另外一个比较简单的应用,还可以用来判断...
分类:
其他好文 时间:
2014-08-30 15:09:49
阅读次数:
168
Dijsktra算法介绍Dijsktra算法是大牛Dijsktra于1956年提出,用来解决有向图单源最短路径问题。但不能解决负权的有向图,若要解决负权图则需要用 到Bellman-Ford算法。算法思想是,在dfs遍历图的过程中,每一次取出离源点的最近距离的点,将该点标记为已访问,松弛与该点相邻的...
分类:
Web程序 时间:
2014-08-30 12:28:09
阅读次数:
271
http://tyvj.cn/Problem_Show.aspx?id=1467这题我并不是看题解a的。但是确实从题解得到了启发。一开始我就想到一个正解,设d[i][0]表示i开始走过奇数个点的最短路,d[i][1]表示i走过偶数个点的最短路,那么转移很简单d[v][1]=min(d[v][1], ...
分类:
其他好文 时间:
2014-08-29 14:19:38
阅读次数:
269
题目链接:
huangjing
题意:
给了起始和终点城市,然后给了若干对城市和距离,然后从起点到终点最小的费用,但是有一个新优惠,那就是费用最大的两个城市之间可以免费。
思路:
最开始以为求了最短路然后减去最大的费用即可。但是想了一组样例就知道是错的。
比如1--->2---->3 然后有直接1----->3,那么如果按刚才的思路,那么最小费用就是2
2 5...
分类:
其他好文 时间:
2014-08-28 11:32:23
阅读次数:
260
解题报告
裸floyd。
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using namespace std;
int n;
double mmap[210][210];
struct node {
double x,y;
} p[210];
double disc(node p1,node p2) {
...
分类:
其他好文 时间:
2014-08-27 22:05:58
阅读次数:
312
题目如题。题解如题。
由于目标点最多只有4个,先bfs出俩俩最短路(包括起点),再dfs最短路。)0s1A;(当年弱跪杭州之题,现看如此简单)
#include
#include
#include
#include
#include
using namespace std;
struct point
{
int x,y;
int cnt;
};
char a[105][105]...
分类:
其他好文 时间:
2014-08-27 22:00:38
阅读次数:
272