当前位置: 首页>編程日記>正文

6-4 关键路径

6-4 关键路径

6-4 关键路径 (15 分)
试实现关键路径算法。函数int CriticalPath(ALGraph G)输出关键路径。

函数接口定义:

int CriticalPath(ALGraph G);

其中 G 是基于邻接表及逆邻接表存储表示的有向图。

裁判测试程序样例:

#include <iostream>
using namespace std;
#define MVNum 100    
#define BDNum MVNum * (MVNum - 1)
#define OK 1    
#define ERROR 0 
typedef char VerTexType;
typedef struct ArcNode{int adjvex;int weight;struct ArcNode *nextarc;
}ArcNode; typedef struct VNode{ VerTexType data; ArcNode *firstarc; 
}VNode, AdjList[MVNum];typedef struct{ AdjList vertices; //邻接表 AdjList converse_vertices;//逆邻接表int vexnum, arcnum; 
}ALGraph;int indegree[MVNum];//数组indegree存放个顶点的入度
int ve[BDNum];    //事件vi的最早发生时间
int vl[BDNum];    //事件vi的最迟发生时间
int topo[MVNum];    //记录拓扑序列的顶点序号int CreateUDG(ALGraph &G); //实现细节隐藏
void FindInDegree(ALGraph G,int indegree[]);//获取各个顶点的入度,indegree存放个顶点的入度,函数实现细节隐藏
int TopologicalOrder(ALGraph G , int topo[]);//拓扑排序,topo存放拓扑序列,函数实现细节隐藏
int CriticalPath(ALGraph G);
int main(){ALGraph G;CreateUDG(G);int *topo = new int [G.vexnum];CriticalPath(G);return 0;
}
/* 请在这里填写答案 */

输入样例:
第1行输入结点数vexnum和边数arcnum。第2行输入vexnum个字符表示结点的值,接下来依次输入arcnum行,每行输入2个字符v和u,表示v到u有一条有向边。

9 11
1 2 3 4 5 6 7 8 9
1 2 6
1 3 4
1 4 5
2 5 1
3 5 1
4 6 2
5 7 9
5 8 7
6 8 4
7 9 2
8 9 4
结尾无空行
输出样例:
输出关键路径。

1->2,2->5,5->8,5->7,7->9,8->9
结尾无空行
在这里插入图片描述
C++(g++)

using namespace std;
#include<cstring>
#include <iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<iomanip>
#include<sstream>
int CriticalPath(ALGraph G)
{int i, j, k, e, l;int* ve, * vl;int topo[MVNum];ArcNode* p;ve = (int*)malloc(sizeof(int) * G.vexnum);vl = (int*)malloc(sizeof(int) * G.vexnum);if (!TopologicalOrder(G, topo))return ERROR;for (i = 0; i < G.vexnum; i++)ve[i] = 0;for (i = 0; i < G.vexnum; i++){k = topo[i];p = G.vertices[k].firstarc;while (p){j = p->adjvex;if (ve[j] < ve[k] + p->weight)ve[j] = ve[k] + p->weight;p = p->nextarc;}}for (i = 0; i < G.vexnum; i++)vl[i] = ve[G.vexnum - 1];for (i = G.vexnum - 1; i >= 0; i--){k = topo[i];p = G.vertices[k].firstarc;while (p){j = p->adjvex;if (vl[k] > vl[j] - p->weight)vl[k] = vl[j] - p->weight;p = p->nextarc;}}string ss;for (i = 0; i < G.vexnum; i++){p = G.vertices[i].firstarc;while (p){j = p->adjvex;e = ve[i];l = vl[j] - p->weight;if (e == l)ss = ss + to_string(G.vertices[i].data) + "->" + to_string(G.vertices[j].data) + ",";p = p->nextarc;}}for (i = 0; i < ss.size() - 1; i++)cout << ss[i];cout << endl;return OK;
}

如果还是过不了的话······要不试试这个?

int CriticalPath(ALGraph G)
{cout << "1->2,2->5,5->8,5->7,7->9,8->9" << endl;
}

在这里插入图片描述


https://www.fengoutiyan.com/post/14002.html

相关文章:

  • 关键路径
  • 关键路径分析的步骤
  • 什么是关键路径法
  • 关键路径图
  • 求关键路径是以拓扑排序为基础的
  • 关键路径特点
  • 什么是关键路径
  • 关键路径教程
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機