我的Data Structures and Algorithms代码仓:https://github.com/617076674/Data-Structures-and-Algorithms

原题链接:https://pintia.cn/problem-sets/16/problems/687

题目描述:

知识点:最短路径、SPFA算法

思路:对每个点为起点做SPFA算法

期望时间复杂度是O(kMN),其中k是一个常数,在很多情况下k不超过2,M是图中的边数,可见这个算法异常高效,并且经常性地优于堆优化的Dijkstra算法。空间复杂度是O(N + M)。

C++代码:

#include<iostream>
#include<vector>
#include<queue>using namespace std;struct node{int v, len;node(int _v, int _len){v = _v;len = _len;}
};int N, M, v1, v2, len, INF = 1000000000;
vector<node> graph[101];
int d[101], countInq[101];
bool inq[101];
int minIndex, minLen = INF;bool spfa(int s);int main(){scanf("%d %d", &N, &M);for(int i = 0; i < M; i++){scanf("%d %d %d", &v1, &v2, &len);graph[v1].push_back(node(v2, len));graph[v2].push_back(node(v1, len));}for(int i = 1; i <= N; i++){spfa(i);int maxLen = 0;for(int j = 1; j <= N; j++){if(d[j] > maxLen){maxLen = d[j];}}if(maxLen != INF){if(maxLen < minLen){minLen = maxLen;minIndex = i;}}}if(minLen == INF){printf("0\n");return 0;}printf("%d %d\n", minIndex, minLen);return 0;
}bool spfa(int s){fill(d + 1, d + N + 1, INF);fill(countInq + 1, countInq + N + 1, 0);fill(inq + 1, inq + N + 1, false);d[s] = 0;queue<int> q;q.push(s);countInq[s]++;inq[s] = true;while(!q.empty()){int u = q.front();q.pop();inq[u] = false;for(int i = 0; i < graph[u].size(); i++){int v = graph[u][i].v;int len = graph[u][i].len;if(d[u] + len < d[v]){d[v] = d[u] + len;if(!inq[v]){q.push(v);countInq[v]++;inq[v] = true;if(countInq[v] > N - 1){return false;}}}}}return true;
}

C++解题报告:

Data Structures and Algorithms7-25——Harry Potter's Exam相关推荐

  1. pandas笔记(pandas Data Structures)

    pandas笔记(pandas Data Structures) 生信start_site已关注 32020.06.15 03:02:37字数 766阅读 509 pandas包含数据结构和数据操作工 ...

  2. Oblivious Data Structures学习笔记

    Refence: Oblivious Data Structures*(Xiao Shaun Wang1, Kartik Nayak1, Chang Liu1, T-H. Hubert Chan2, ...

  3. Algorithms and Data Structures I

    Vintage 80s office by Mohamed Chahin 更好的阅读体验请访问 Algorithms and Data Structures I Acquire fundamental ...

  4. Python_Example_ Data Structures and Algorithm Analysis 学习/示例

    Author: 楚格 2018-11-19   19:05:11 IDE: Pycharm2018.02   Python 3.7 KeyWord :  Data Structures and Alg ...

  5. python 科学计算设计_Python科学计算——Data Structures

    为什么选择Python作为科学计算语言? 有关于Matlab和Python哪个更适合作为科学计算语言的争论已久,之所以选择Python作为首选的科学计算语言,不仅仅是因为它免费,开源,有很多优秀的库和 ...

  6. Data Structures with C++ Using STL Chapter 3算法概述---笔记

    <Data Structures with C++ Using STL Chapter 3算法概述---笔记>,作者:茉莉花茶,原文链接:http://www.cnblogs.com/yc ...

  7. 20162314 《Program Design Data Structures》Learning Summary Of The First Week

    20162314 2017-2018-1 <Program Design & Data Structures>Learning Summary Of The First Week ...

  8. 【Python学习笔记】Coursera课程《Python Data Structures》 密歇根大学 Charles Severance——Week6 Tuple课堂笔记...

    Coursera课程<Python Data Structures> 密歇根大学 Charles Severance Week6 Tuple 10 Tuples 10.1 Tuples A ...

  9. 2014 UESTC Training for Data Structures D - 长使英雄泪满襟

    以下内容来自ShallWe's blog 题目 2014 UESTC Training for Data Structures D - 长使英雄泪满襟 看出司马懿在等蜀军粮草不济,孔明于是下令分兵屯田 ...

最新文章

  1. java后门_@Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码...
  2. 用正则表达式作html2RSS服务
  3. mongo笔记 // 一字一句的写下来,工作点滴片段
  4. (4.12)全面解析-SQL事务+隔离级别+阻塞+死锁
  5. Oracle SQL Developer 调试存储过程步骤(Oracle)
  6. 会声会影2022语音转文字功能怎么用
  7. 没解决:如何离线更新eclipse支持的Compiler compliance level
  8. FIR滤波器和IIR滤波器
  9. LPDDR4学习笔记
  10. Pytorch求向量的L1范数或L2范数
  11. rsh服务配置主机无密码访问
  12. 删除主键索引 oracle,删除主键无法删除对应索引问题 drop constraint
  13. 你不得不学会的英文赞美句子
  14. VTK:交互与拾取——单位拾取
  15. 基于SSM社区网格化小区管理系统设计
  16. Swoole 基础入门
  17. SOMEIP传输层协议 TCP UDP协议选择
  18. 加入一个组播组过程分析
  19. KDE设置快捷键打开剪贴板历史记录Klipper
  20. Ambari 2.7.3汉化

热门文章

  1. 如何写一个健壮且高效的串口接收程序?
  2. Vue 单/多图片(可全屏预览)翻页轮播组件
  3. 华为抓取错误日志在哪里_抓取android手机log的介绍
  4. 基于javascript的数据结构实现(一)
  5. 题解 洛谷P7227 【[COCI2015-2016#3] ESEJ】
  6. Java循环结构编程练习
  7. date js 减去_如何在JavaScript中从该日期减去一个星期?
  8. scratch-gui扩展自动导入
  9. EXCEL 实现所有子表条件筛选汇总到新表
  10. 通用组件SearchView