当前位置: 首页 > news >正文

网站建设费要摊销吗西宁市网站建设

网站建设费要摊销吗,西宁市网站建设,头像设计,wordpress 视频站主题B : DS图应用–最短路径 文章目录 B : DS图应用--最短路径DescriptionInputOutputSampleInput Output 解题思路#xff1a;初始化主循环心得#xff1a; AC代码 Description 给出一个图的邻接矩阵#xff0c;再给出指定顶点v0#xff0c;求顶点v0到其他顶点的最短路径 In…B : DS图应用–最短路径 文章目录 B : DS图应用--最短路径DescriptionInputOutputSampleInput Output 解题思路初始化主循环心得 AC代码 Description 给出一个图的邻接矩阵再给出指定顶点v0求顶点v0到其他顶点的最短路径 Input 第一行输入t表示有t个测试实例 第二行输入n表示第1个图有n个结点 第三行起每行输入邻接矩阵的一行以此类推输入n行 第i个结点与其他结点如果相连则为1无连接则为0数据之间用空格隔开 第四行输入v0表示求v0到其他顶点的最短路径距离 以此类推输入下一个示例 Output 每行输出v0到某个顶点的最短距离和最短路径 每行格式v0编号-其他顶点编号—-[最短路径]具体请参考示范数据 Sample Input 1 5 0 5 0 7 15 0 0 5 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0Output 0-1-5----[0 1 ] 0-2-9----[0 3 2 ] 0-3-7----[0 3 ] 0-4-10----[0 3 2 4 ]解题思路 首先先要了解图论里面单源最短路径的实现——Dijkstra算法知道它是怎么一步步算出源点到每一个点的最短距离的可以参考这个视频【算法】最短路径查找—Dijkstra算法然后就看代码对着视频来进行解释 // Dijkstra算法实现 void Dijkstra(int start) {memset(dis, 0x3f, sizeof(dis));memset(fixed, 0, sizeof(fixed));last[start] -1;dis[start] 0;int minDisNode, minDis;for (int i 0; i n; i){minDis INF;for (int j 0; j n; j)if (!fixed[j] dis[j] minDis)minDisNode j, minDis dis[j];fixed[minDisNode] true;for (int j 0; j n; j){if (g[minDisNode][j] ! 0 minDis g[minDisNode][j] dis[j])dis[j] minDis g[minDisNode][j], last[j] minDisNode;}}return 0; }初始化 memset(dis, 0x3f, sizeof(dis)); // 设置所有节点到源点的初始距离为无穷大 memset(fixed, 0, sizeof(fixed)); // 初始化所有节点为未固定 last[start] -1; // 源点的上一个节点设置为-1 dis[start] 0; // 源点到自身的距离设置为0dis[]数组存储从源点到每个节点的当前最短距离。初始时除了源点到自身的距离为0外所有其他距离都设置为无穷大。fixed[]数组用于标记节点是否已经找到了从源点出发的最短路径。last[]数组用于记录到达每个节点的最短路径上的前一个节点对于源点而言没有前一个节点所以设置为-1。 主循环 for (int i 0; i n; i) {minDis INF;for (int j 0; j n; j)if (!fixed[j] dis[j] minDis)minDisNode j, minDis dis[j];fixed[minDisNode] true;for (int j 0; j n; j){if (g[minDisNode][j] ! 0 minDis g[minDisNode][j] dis[j])dis[j] minDis g[minDisNode][j], last[j] minDisNode;} }第一个for循环遍历所有节点寻找最短路径。内层的第一个for循环用于找到当前未固定节点中距离源点最近的节点minDisNode。fixed[minDisNode] true;将找到的最短距离节点标记为已固定。内层的第二个for循环进行“松弛操作”通过minDisNode更新其他未固定节点的最短距离。如果通过minDisNode到某个节点的距离比当前记录的距离短则更新该距离松弛操作if (g[minDisNode][j] ! 0 minDis g[minDisNode][j] dis[j])检查是否存在一条从minDisNode到j的边并且通过这条边到达j的距离是否比当前记录的距离短。如果是更新dis[j]为通过minDisNode到j的新距离并记录last[j]为minDisNode。 心得 一开始学这个算法的时候可能会想到一个环对于这个环例如一个三个节点的环现在节点一是源点懵的地方就在于我在第一个次循环之后得出节点一到节点二最短我就把节点二纳入fixed中我就有疑惑如果是一个环的话那我从节点一到节点三再到节点二为什么不是最短。现在项想明白在循环内层第一个for循环的时候就已经挑选出最短的了哪怕节点一到节点二和节点一到节点三的距离相等节点三到节点二总不可能为负数吧。 明白这个算法的原理之后后面的输出就很简单了直接上代码吧。 AC代码 #include iostream #include vector using namespace std;const int INF 999999; // 定义无穷大常量void printShortestPath(int u, const vectorint previousNodes) {if (u -1)return;printShortestPath(previousNodes[u], previousNodes);cout u ;return; }void calculateShortestPaths(int start, const vectorvectorint graph, int n) {vectorint previousNodes(n, -1);vectorint shortestDistances(n, INF);vectorint visitedNodes(n, 0);shortestDistances[start] 0;for (int i 0; i n; i) {int minDistance INF, nearestNode -1;for (int j 0; j n; j)if (!visitedNodes[j] shortestDistances[j] minDistance){nearestNode j;minDistance shortestDistances[j];}visitedNodes[nearestNode] 1;for (int j 0; j n; j)if (graph[nearestNode][j] ! 0 minDistance graph[nearestNode][j] shortestDistances[j]){shortestDistances[j] minDistance graph[nearestNode][j];previousNodes[j] nearestNode;}}for (int i 0; i n; i) {if (i ! start) {cout start - i - shortestDistances[i];cout ----[;printShortestPath(i, previousNodes);cout ] endl;}}return; }int main() {int t;cin t;while (t--) {int n;cin n;vectorvectorint graph(n, vectorint(n));for (int i 0; i n; i)for (int j 0; j n; j)cin graph[i][j];int sourceNode;cin sourceNode;calculateShortestPaths(sourceNode, graph, n);}return 0; }
http://www.pierceye.com/news/891478/

相关文章:

  • 百度aipage智能建站系统wordpress打印代码
  • 深圳招聘官网深圳搜索引擎优化推广便宜
  • 创建网站大约9377传奇
  • 单页面网站可以做自适应网站吗建筑设计培训
  • 做海报可以在哪些网站下载素材一键生成装修效果图app
  • 福田区住房和建设局官方网站wordpress仿凡客商城主题
  • 做下载网站用什么程序好深圳公司注册服务
  • 猎头网站模板济源专业网站建设(制作网站)
  • kotlin做网站单页应用网站
  • 邢台网站改版开发长沙教育网站开发
  • 网站开发人员必备技能网站背景图片自动切换
  • 企业网站建立策划书有网站吗给一个
  • 外贸建站有哪些公司建设主管部门网站查询
  • 泰安市网站建设广州优化公司哪家好
  • 手机网游传奇西安关键词优化平台
  • 网站建设公司权威机构3d虚拟人物制作软件
  • 北京网站建设seo公司哪家好阿里巴巴企业邮箱登录入口
  • 广州shopify代建站新产品代理
  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设