网站网站建设的原则有哪些,微信公众平台开发者文档,高校网站如何建设论文,空气源热泵热水器网站建设全部代码
全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork
单源最短路问题 先用spfa算法 不行再换其他的
spfa-超级万能 说不定比dijsktra还快
dis[] 代表第k到某一点的最短距离
queue 代表刚被更新的点 它有可能更…全部代码
全部代码在github acwing 上 正在更新 https://github.com/stolendance/acwing 图论 欢迎大家star与fork
单源最短路问题 先用spfa算法 不行再换其他的
spfa-超级万能 说不定比dijsktra还快
dis[] 代表第k到某一点的最短距离
queue 代表刚被更新的点 它有可能更新其他路径 所以检查它的出边
isin代表该点是否在queue中
队列放入起点 -k
while(队列不为空)取出队头遍历所有t的出边 t-wb如果dis[b]dis[t]w[t,b],更新,如果b不在队列中,加入btypedef long long ll;
typedef pairll,ll pll;
struct Edge
{int next;int val;Edge(int next_,int val_):next(next_),val(val_){;}
};
class Solution {
public:int networkDelayTime(vectorvectorint times, int n, int k) {vectorvectorEdge graph(n1);for(auto item:times){int aitem[0];int bitem[1];int citem[2];graph[a].push_back(Edge(b,c));}vectorll dis(graph.size(),INT_MAX);vectorint isin(graph.size(),0);queueint ls;ls.push(k);dis[k]0;isin[k]1;while(ls.size()){int tls.front();ls.pop();isin[t]0;for(int i0;igraph[t].size();i){// k-t-idint distancegraph[t][i].val;int idgraph[t][i].next;if(dis[t]distancedis[id]){dis[id]dis[t]distance;if(isin[id]0){ls.push(id);isin[id]1;}}}}int rs *max_element(dis.begin()1,dis.end());if(rsINT_MAX) return -1;else return rs;}
};朴素版dijsktra -单源最短路-所有边权重都是正数 基于 稠密图(邻接矩阵)
s:当前已经确定最短路径距离的点 dis[0 ]0 dis[i]OO 只有起点被确定到了 for(i 1 …n) t《- 不在s中的距离最近的点 s〈-t 用t更新其他点的距离(看下) dij实现的时候是通过 将距离设置成无穷大 来表达 不可达 dij 由于边很多, 稠密图 所以用邻接矩阵存即可 dij 需要找n个点 所以外层是一个for循环x 总结下来:1. 把未加入的最近的加进来2. 标记加入3. 根据加入的点更新距离#includeiostream
#includevector
using namespace std;
#define INA INT_MAX
//https://leetcode.cn/problems/network-delay-time/
int networkDelayTime(vectorvectorint times, int N, int k) {// 因为点的坐标是从1开始 , 所以开N1个// 直接在graph上更新 方便很多// graph要采用long long INT_MAX某个数 不会变成负数vectorvectorlong long graph(N1,vectorlong long(N1,INT_MAX));for(int i1;iN;i) graph[i][i]0;for(auto e:times) graph[e[0]][e[1]]e[2];vectorint vis(graph.size(),0);vis[k]1;// 只要找下除了起点的接下来的点for(int i1;igraph.size()-1;i){int minid0,minxINA;// 在没有使用过的检查最短的距离for(int j1;jgraph.size();j){if(vis[j]0graph[k][j]minx){minidj;minxgraph[k][j];}}vis[minid]1;// 更新// 根据这个点更新其他所有距离for(int j1;jgraph.size();j){graph[k][j]min(graph[k][j],graph[k][minid] graph[minid][j]);}}int ans0;for(int i1;i graph.size();i){if(graph[k][i]INT_MAX) return -1;ansmax(ans, (int)graph[k][i]);}return ans;
}
int main()
{vectorvectorint times{{2,1,1},{2,3,1},{3,4,1}};int rsnetworkDelayTime(times,4,2);coutrsendl;}dijstra 稀疏图(邻接表) -我更喜欢的方式!!!
求点k到其他点的距离
与上面不同的情况是, 采用邻接表最小堆
最小堆 的格式是(点k到该点的距离,该点的id)
dis[] 存储的是点k到达每个点的最短距离
st[] 存储的是否能确定点k到达每个点的距离while(队列不为空)
{队列弹出一个如果该点确定了最短距离,就不管它 if(st[]) continue把弹出的这个点加入最短距离根据这个点进行扩展,遍历这个点指向其他点的边如果比div小,则更新距离加入队列中
}typedef long long ll;
typedef pairll,ll pll;
struct Edge
{int next;int val;Edge(int next_,int val_):next(next_),val(val_){;}
};
class Solution {
public:int networkDelayTime(vectorvectorint times, int n, int k) {vectorvectorEdge graph(n1);for(auto item:times){int aitem[0];int bitem[1];int citem[2];graph[a].push_back(Edge(b,c));}vectorll dis(graph.size(),INT_MAX);vectorint st(graph.size(),0);priority_queuepll,vectorpll,greaterpll ls;ls.push(pll(0,k));dis[k]0;while(ls.size()){auto itemls.top();ls.pop();ll distanceitem.first;int iditem.second;// 保证未加入if(st[id]) continue;// 加入st[id]1;// 扩展更新for(int i0;igraph[id].size();i){// k-id-id2// distance distance2int id2graph[id][i].next;int distance2graph[id][i].val;if(distancedistance2dis[id2]){dis[id2]distancedistance2;// 加入队列ls.push(pll(dis[id2],id2));}}}int rs(int)*max_element(dis.begin()1,dis.end());if(rsINT_MAX) return -1;else return rs;}
};
文章转载自: http://www.morning.bflws.cn.gov.cn.bflws.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.rgmls.cn.gov.cn.rgmls.cn http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn http://www.morning.sqnrz.cn.gov.cn.sqnrz.cn http://www.morning.qdlr.cn.gov.cn.qdlr.cn http://www.morning.lpzyq.cn.gov.cn.lpzyq.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.spghj.cn.gov.cn.spghj.cn http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.ychrn.cn.gov.cn.ychrn.cn http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn http://www.morning.zdzgf.cn.gov.cn.zdzgf.cn http://www.morning.qfmns.cn.gov.cn.qfmns.cn http://www.morning.vjdofuj.cn.gov.cn.vjdofuj.cn http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.skscy.cn.gov.cn.skscy.cn http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn http://www.morning.bwttp.cn.gov.cn.bwttp.cn http://www.morning.mtyhk.cn.gov.cn.mtyhk.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.rbkl.cn.gov.cn.rbkl.cn http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.jqwpw.cn.gov.cn.jqwpw.cn http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.pngph.cn.gov.cn.pngph.cn http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn http://www.morning.xhklb.cn.gov.cn.xhklb.cn http://www.morning.kbdrq.cn.gov.cn.kbdrq.cn http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.dqwykj.com.gov.cn.dqwykj.com http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.hkysq.cn.gov.cn.hkysq.cn http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn http://www.morning.wpqwk.cn.gov.cn.wpqwk.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn http://www.morning.fbnsx.cn.gov.cn.fbnsx.cn http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn http://www.morning.jphxt.cn.gov.cn.jphxt.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.tddrh.cn.gov.cn.tddrh.cn http://www.morning.mjbnp.cn.gov.cn.mjbnp.cn http://www.morning.fkgct.cn.gov.cn.fkgct.cn http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.rnzjc.cn.gov.cn.rnzjc.cn http://www.morning.brnwc.cn.gov.cn.brnwc.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.tygn.cn.gov.cn.tygn.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.lmxrt.cn.gov.cn.lmxrt.cn http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn http://www.morning.mlzyx.cn.gov.cn.mlzyx.cn http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.wqgr.cn.gov.cn.wqgr.cn http://www.morning.mpflb.cn.gov.cn.mpflb.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.qmrsf.cn.gov.cn.qmrsf.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn