求1到N的最短路 注意有重边 跑一遍dijkstra就行 /* *********************************************** Author :Sun Yuefeng Created Time :2016/10/22 14:18:06 File Name :A.cpp ************************************************ */ #include<cstdio> #include<iostream> #inc…
SPFA求负环 模板题 记得每组处理之前clear vector /* *********************************************** Author :Sun Yuefeng Created Time :2016/10/25 18:02:02 File Name :A.cpp ************************************************ */ #include<cstdio> #include<iostream>…
题意: 在一个有向图中求n头牛从自己的起点走到x再从x走回来的最远距离 思路一开始是暴力跑dij…… 讲道理不太可能…… 然后就百度了一下 才知道把矩阵转置的话就只需要求两次x的单源最短路…… /* *********************************************** Author :Sun Yuefeng Created Time :2016/10/22 20:09:36 File Name :A.cpp *******************************…
求每条道路的最大承载量 和上一道题差不多 就是松弛的规则从最大值变成了最小值 /* *********************************************** Author :Sun Yuefeng Created Time :2016/10/22 20:09:36 File Name :A.cpp ************************************************ */ #include<cstdio> #include<iostrea…
求第一个点到第二个点的所有通路上最长的边 dijkstra的变形 每次松弛的是每条边通路上的的最长的边 WA了好几次是因为用了%lf 改成%f就过了…… /* *********************************************** Author :Sun Yuefeng Created Time :2016/10/22 14:18:06 File Name :A.cpp ************************************************ */…
对于最短路,我主要使用的就是dijkstra,Floyd,SPFA这三个算法.先来介绍一下这三个算法. 1. dijkstra算法.它适用于边权为正的情况,它是单源最短路,就是从单个源点出发到所有的结点的最短路,它同时适用于无向图和有向图. 它是基于贪心的思想,看下伪代码. 1.清除所有点的标记 2.设d[0]=0,其他的d[i]=INF; 3.循环n次{ 在所有的未标记的结点中,选取d值最小的结点x, 给结点x标记 对于所有从x出发的所有的边(x,y),更新d[y]=min(d[y],d[x]…
#include<iostream> #include<cstring> #include<algorithm> #include<iomanip> #include<cmath> #include<cstdio> #include<vector> using namespace std; #define MAXN 101 #define INF 0x3f3f3f3f /* 8:19 8:35 题意理解太慢:在所有最短路路…
题意: 一次地震震坏了所有网点 现在开始修复它们 有N个点 距离为d的网点可以进行通信 O p   代表p点已经修复 S p q 代表询问p q之间是否能够通信 思路: 基础并查集 每次修复一个点重新刷一边图就行了 /* *********************************************** Author :Sun Yuefeng Created Time :2016/11/1 15:40:35 File Name :food.cpp ******************…
这道题其实也非常简单,只是在求割边及其个数的情况下,每次往里面加入新的边,并再次计算割边的个数. 我们用tarjan可以求出原图的桥以及个数,当然我们不能暴力加边,然后求解,那么如何求呢??? 其实非常简单,我们可以LCA进行求解,我们在a和b点两个点之间加入新的边,那么相当于连通了a,b,那么原来a,b以及其LCA上的桥,变成不是桥了,为什么???很简单 我加入这条新的边以后,那么从这两个点,到LCA组成了一个环,我们知道环上面的线一定不是桥,所以我们,可以通过寻找LCA,计算出我们减少的桥.…
https://vjudge.net/contest/66569#problem/F 题意:判断图中是否存在负权回路 首先,介绍图的邻接表存储方式 数据结构:图的存储结构之邻接表 邻接表建图,类似于头插法建单链表 head[x]:以x为源点的第一条边,初始值为-1. struct edge { int to; int weight; int next;}e[maxn]; to表示被指向的点:weight表示这条边的权重:next表示源点同为x的下一条边,这是遍历以x为源点的的关键 SPFA算法中…