C++ 利用图形进行旅行

C++ 利用图形进行旅行,c++,algorithm,graph,C++,Algorithm,Graph,有人能帮我想一个更好的方法来适应Dijkstra的算法吗?我所认为的一切都不好 输入示例: GP4578马德里01:00波尔图02:00 IK6587波尔图03:00瓦伦西亚05:00 05:30特内里费08:00 AB5874瓦伦西亚05:40柏林10:00 瓦伦西亚05:00 05:30这是中途停留,所有人都在30分钟左右。 航班有到达和起飞时间、航班号、始发地和目的地城市 所以,我需要从一个城市到另一个城市的最短路径,好的,没问题。 我无法组织这个,我从上周就开始尝试了。 有人能给我想法吗

有人能帮我想一个更好的方法来适应Dijkstra的算法吗?我所认为的一切都不好

输入示例:

GP4578马德里01:00波尔图02:00

IK6587波尔图03:00瓦伦西亚05:00 05:30特内里费08:00

AB5874瓦伦西亚05:40柏林10:00

瓦伦西亚05:00 05:30这是中途停留,所有人都在30分钟左右。 航班有到达和起飞时间、航班号、始发地和目的地城市

所以,我需要从一个城市到另一个城市的最短路径,好的,没问题。 我无法组织这个,我从上周就开始尝试了。
有人能给我想法吗?谁是我的顶点?如何使用边缘

以下是我建议的图表: 两种类型的顶点:

出发地点:机场+出发时间 到达顶点:机场+到达时间。 两种边:

飞行边:从出发顶点到到达顶点 等待边缘:从同一机场的到达顶点到稍后时间的离开顶点。 边上的权重是持续时间,问题是单源最短路径,您可以使用您提到的Dijstra算法来解决它。
至于中间着陆的航班,只需将它们分成若干部分。

我不清楚如何将顶点与边连接起来。什么是内部飞行边缘对象?出发点和到达点的权重和内存地址?不管怎样,我很感激你的回答。我不知道你问什么。如何在C++中表示有向图?有很多可能性。例如,图可以是顶点的std::vector,其中顶点包含机场、时间、出发/到达和传出边的向量。边包含目标顶点的权重和索引。顺便说一句,在中国,心存感激的用户往往会投票给他们感激的答案。