SDUT-2498-AOE网上的关键路径

2023-10-07 16:32
文章标签 路径 关键 网上 sdut 2498 aoe

本文主要是介绍SDUT-2498-AOE网上的关键路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路:

用的SPFA ,加个判断字典的

用的是反向建图的方式,从终点访问到起点

用数组模拟邻接表

 第一道实际的SPFA的题啊,加油啊

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#define Maxn 10010
#define Maxm 10010
#define Max 10100
using namespace std;
int head[Maxm],bj[Maxn],dis[Maxn];
int pos[Maxn];
int op[Maxn];
int din[Maxn], dout[Maxn];
int n,m;
struct node
{int v, w, next;
}ls[50500];int aa[Maxn];
void SPFA()
{int  q, z;for(int i = 1;i <= n; i++){if(din[i] == 0)q = i;if(dout[i]==0)z = i;}queue<int>a;for(int i = 0; i <= n; i++){dis[i] = -9999999;op[i] = 9999999;}bj[q] = 1;dis[q] = 0;a.push(q);while(!a.empty()){int top = a.front();a.pop();pos[top]++;bj[top] = 0;for(int i = head[top]; i!=-1;i = ls[i].next){if(dis[ls[i].v] <= dis[top] + ls[i].w){if(dis[ls[i].v] < dis[top] + ls[i].w){dis[ls[i].v] = dis[top] + ls[i].w;op[ls[i].v] = top;if(!bj[ls[i].v]){bj[ls[i].v] = 1;a.push(ls[i].v);}}else{if(top < op[ls[i].v]){op[ls[i].v] = top;if(!bj[ls[i].v]){bj[ls[i].v] = 1;a.push(ls[i].v);}}}}}}int num = 0;int tmp = z ;while(tmp != q){aa[num++] = tmp;tmp= op[tmp] ;}aa[num] = q;printf("%d\n",dis[z]) ;for(int i = 0 ; i< num;i++){printf("%d %d\n",aa[i],aa[i + 1]) ;}}
int main()
{while(~scanf("%d%d",&n,&m)){memset(head,-1,sizeof(head));memset(pos,0,sizeof(pos));memset(din,0,sizeof(din));memset(dout,0,sizeof(dout));int k = 0;while(m--){int u, v, w;scanf("%d%d%d",&u,&v,&w);ls[k].v = u;ls[k].w = w;ls[k].next = head[v];head[v] = k++;din[u]++;dout[v]++;}SPFA();}return 0;
}


这篇关于SDUT-2498-AOE网上的关键路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/159026

相关文章

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

图的最短路径算法——《啊哈!算法》

图的实现方式 邻接矩阵法 int[][] map;// 图的邻接矩阵存储法map = new int[5][5];map[0] = new int[] {0, 1, 2, 3, 4};map[1] = new int[] {1, 0, 2, 6, 4};map[2] = new int[] {2, 999, 0, 3, 999};map[3] = new int[] {3, 7

49个权威的网上学习资源网站

艺术与音乐 Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。 Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。 Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。 数学,数据科学与工程 Codecad

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"

两轴直驱稳定云台的电源系统设计与关键要求

两轴直驱稳定云台,作为现代摄影、摄像及监控领域的高精尖设备,广泛应用于各种不稳定环境(如移动车辆、海上船只、空中飞机等),以提供相机、传感器等关键设备的稳定支持。其卓越的性能和可靠性,很大程度上依赖于其精心设计的电源系统。本文将对两轴直驱稳定云台的电源系统要求进行全面剖析,并深入探讨电压波动可能带来的不良影响及应对措施。 电源系统的核心要求 高容量与功率:

jmeter依赖jar包找不到类路径

这两天我在纠结这个问题,为啥我maven打包放在jmeter路径下后,jmeter的bean Shell 就是找不到这个类。纠结很久解开了。我记录下,留给后来的朋友。   Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.jmeter.protocol.http.s

运行.bat文件,如何在Dos窗口里面得到该文件的路径

把java代码打包成.jar文件,编写一个.bat文件,执行该文件,编译.jar包;(.bat,.jar放在同一个文件夹下) 运行.bat文件,如何在Dos窗口里面得到该文件的路径,并运行.jar文件: echo 当前盘符:%~d0 echo 当前路径:%cd% echo 当前执行命令行:%0 echo 当前bat文件路径:%~dp0 echo 当前bat文件短路径:%~sdp0 nc