题目链接: poj2391 题意: 有n块草地,每块草地上有一定数量的奶牛和一个雨棚,并给出了每一个雨棚的容(牛)量. 有m条路径连接这些草地 ,这些路径是双向的,并且非常宽敞,能够容下无限条牛并排走, 给出经过每条路径所须要消耗的时间 问:全部牛都到达雨棚下的最小时间 解题思路: 类似 牛与挤奶器 ...
分类:
其他好文 时间:
2017-05-19 09:55:08
阅读次数:
194
传送门 网上说这是偏序集最大反链,然而我实在不理解。 所以我换了一个思路,先用floyed,根据点的连通性连边, 问题就转换成了找出最多的点,使任意两个点之间不连边,也就是最大独立集。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 #include ...
分类:
其他好文 时间:
2017-05-16 10:10:54
阅读次数:
206
最短路径算法1——Floyed与Dijkstra算法。 求图中一个点到另一个点的最短路径,毫无疑问Floyed算法是最简单的,而且是多源最短路径,但时间复杂度很高,达到O(n^3)。 原理就是不断遍历一边所有点,把他们当作中间点,每次更新整个图。 Floyed代码: 1 #include<cstdi ...
分类:
编程语言 时间:
2017-05-07 13:03:12
阅读次数:
173
灾后重建 思路: 看到n<=200,思考弗洛伊德算法; 如何floyed呢? floyed是一种动态规划求最短路的算法; 它通过枚举中间点来更新两点之间最短路; 回到这个题本身; 所有点的重建完成的时间和询问的时间都已经排好序了; 所以,我们把floyed拆开; 对于一个三维的k,i,j的floye ...
分类:
其他好文 时间:
2017-04-22 17:34:58
阅读次数:
132
小根堆实现dijkstra 求图的最短路径,最常用的有四种方法: 1.Floyed(弗洛伊德)算法。最简单的最短路径算法,可以求多源最短路径。时间复杂度为O(n*n*n)。 2.Dijkstra(迪杰斯特拉)算法。只能求单源最短路径。时间复杂度为O(n*n)。 3.Bellman-Ford(贝尔曼福 ...
分类:
其他好文 时间:
2017-04-18 16:01:49
阅读次数:
191
#include<stdio.h> #include<stdlib.h> #define max 1000000000 int d[1000][1000],path[1000][1000]; int main() { int i,j,k,m,n; int x,y,z; scanf("%d%d",&n ...
分类:
编程语言 时间:
2017-04-15 23:49:09
阅读次数:
367
Floyed算法 O(N3) 简称Floyed(弗洛伊德)算法,是最简单的最短路径算法,可以计算图中任意两点间的最短路径。Floyed的时间复杂度是O (N3),适用于出现负边权的情况。 算法分析&思想讲解: 三层循环,第一层循环中间点k,第二第三层循环起点终点i、j,算法的思想很容易理解:如果点i ...
分类:
编程语言 时间:
2017-04-10 17:39:29
阅读次数:
283
广搜 bfs 1 //bfs 2 3 #include<iostream> 4 #include<cstdio> 5 using namespace std; 6 int queue[1001],top=0,end=1; 7 int map[1001][1001]; 8 int vis[1001]; ...
分类:
其他好文 时间:
2017-04-09 21:08:02
阅读次数:
169
洛谷传送门 一看数据就是floyed(毕竟年代久远),然而建图不是那么好贱好建,只知道三个机场,需要判断斜边来求第4个机场坐标。 往后一些麻烦的建图。 最后floyed就好。 ——代码 1 #include <iostream> 2 #include <cstdio> 3 #include <cma ...
分类:
其他好文 时间:
2017-04-08 09:33:46
阅读次数:
162
负环 【问题描述】 在忘记考虑负环之后,黎瑟的算法又出错了。对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得环上的边权和为负数。保证图中不包含重边和自环。 【输入格式】 第1两个整数n, m,表示图的点数和边数。 接下来的m行,每<=三个整数ui, vi, wi,表<=有一条从 ...
分类:
其他好文 时间:
2017-03-25 14:09:27
阅读次数:
166