P1807 最长路 洛谷
时间: 2023-10-23 14:07:24 浏览: 96
洛谷 P5660 [CSP-J2019] 数字游戏 C++代码
P1807 最长路是一道洛谷的题目,要求计算一个有向无环图中1到n之间的最长路径。关于这个问题,可以使用广搜算法来依次搜索图中的结点,并记录当前结点的最长路并不断更新。具体的实现可以使用邻接矩阵来存储边权,并注意可能存在重边的情况需要取最大值。此外,为了避免超时,可以在入队时加上一个判断语句,只有当到达该点的最长路需要更新时才进行入队操作。以下是一种可能的解法:
```cpp
#include <bits/stdc++.h>
#define endl '\n'
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const ll mo=80112002;
int n, m, u, v, ww, w = max(w[u][v], ww);
}
q.push(1);
memset(a, -1, sizeof(a));
a = 0;
while (!q.empty()) {
int x = q.front(); q.pop();
for (int i=1; i<=n; i++) {
if (w[x][i && a[i < a[x + w[x][i]) {
a[i = a[x + w[x][i];
q.push(i);
}
}
}
cout << a[n];
return 0;
}
```
以上是一种可能的代码实现,使用了广搜算法来计算最长路径。该算法使用邻接矩阵存储边权,通过不断更新当前结点的最长路来得到1到n之间的最长路径。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [洛谷P1807 最长路(BFS)](https://blog.csdn.net/m0_60543948/article/details/126431087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [图论——最长路(洛谷 P1807)](https://blog.csdn.net/weixin_44572229/article/details/120743825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文