一个人的旅行
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18484 Accepted Submission(s): 6429
Problem Description
虽然草儿是个路痴(就是在杭电待了一年多,...
分类:
其他好文 时间:
2014-07-29 14:57:18
阅读次数:
275
畅通工程续高仿代码如下#include #include #include #include using namespace std;const int inf = 0x3f3f3f3f;#define N 205int d[N][N];void floyd(int n){ for(int k = ...
分类:
其他好文 时间:
2014-07-29 11:37:06
阅读次数:
240
#include
#include
#define maxn 100
#define INF -1
int map[maxn][maxn];
int n, m, path[maxn][maxn];
void Floyd(int n)
{
int i, j, k;
for(k = 0; k < n; ++k)
for(i = 0; i < n; ++i)
...
分类:
其他好文 时间:
2014-07-28 16:12:05
阅读次数:
205
六度分离
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4213 Accepted Submission(s): 1718
Problem Description
1967年,美国著名的社会学家斯坦利·米尔格兰...
分类:
其他好文 时间:
2014-07-28 15:43:33
阅读次数:
247
Floyd可以求出任意两点间的最短距离,代码也相对简单,对于稀疏图来说效率也还是不错的,但由于三个for循环导致时间复杂度较高,不适合稠密图。
Floyd算法模板(精简版):
void Floyd()
{
int dist[maxn][maxn]; // dist存储i到j的最短距离
for(int k = 1; k <= n; k++)
for(int ...
分类:
其他好文 时间:
2014-07-28 00:22:49
阅读次数:
144
解题思路:
题目唯一难点就是如何去表示地点,用map映射可以轻松搞定,一个地点名对应一个值,剩下的就是求最短路径。下面给出三个代码,第一个是用朴素Dijkstra写的,第二个用了Floyd,第三个用了Dijkstra + heap。感觉上运行效率差不多。。。。。
AC代码:
Dijkstra:
#include
#include
#include
#include
usin...
分类:
其他好文 时间:
2014-07-28 00:05:29
阅读次数:
349
Dijkstra:裸的算法,O(n^2),使用邻接矩阵:算法思想:定义两个集合,一开始集合1只有一个源点,集合2有剩下的点。STEP1:在集合2中找一个到源点距离最近的顶点k:min{d[k]}STEP2:把顶点k加入集合1中,同时修改集合2中的剩余顶点j的d[j]是否经过k之后变短,若变短则修改d...
分类:
其他好文 时间:
2014-07-27 22:21:39
阅读次数:
440
题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系分析:考虑一个强连通分量,如果这个分量有n个节点,那么至少只需要n条边皆可以满足传递闭包(因为此时形成环就可),所以求出所有的强连通分量,将他们缩成一个个...
分类:
其他好文 时间:
2014-07-27 10:15:32
阅读次数:
217
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 30972 Accepted Submission(s): 13345
Problem Description
在每年的校赛里,所有进入决赛的同学都会获...
分类:
其他好文 时间:
2014-07-26 17:18:02
阅读次数:
275
Floyd算法计算每对顶点之间的最短路径的问题
题目中隐含了一个条件是一个人可以同时将谣言传递给多个人
题目最终的要求是时间最短,那么就要遍历一遍求出每个点作为源点时,最长的最短路径长是多少,再求这些值当中最小的是多少,就是题目所求
#include
using namespace std;
int n,x,p,t;
int m[120][120],dist[120][120],Max[12...
分类:
其他好文 时间:
2014-07-26 15:21:20
阅读次数:
214