社区讨论
91分 [求调(马蜂较好)]
P1807最长路参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mliw8thd
- 此快照首次捕获于
- 2026/02/12 11:23 上周
- 此快照最后确认于
- 2026/02/14 16:40 5 天前
起因是我们课上刚学的01bfs(然后我就想来看看这节课学的dijkstra)
然后就爆零了...
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
int id, size;
}g[1505][1505];
int ans[1505];
int n, m;
void dij()
{
memset(ans, -1, sizeof(ans));
priority_queue<int, vector<int>, greater<int> > q;
q.push(1);
ans[1] = 0;
while(!q.empty())
{
int x = q.top();
q.pop();
for(int i = 1; i <= n; i++)
{
if(g[x][i].size < -1e8)
{
continue;
}
if(ans[i] < ans[x] + g[x][i].size)
{
ans[i] = ans[x] + g[x][i].size;
q.push(i);
}
}
}
}
signed main()
{
cin >> n >> m;
memset(g, -0x3f3f3f, sizeof(g));
for(int i = 1; i <= m; i++)
{
int x, y, z;
cin >> x >> y >> z;
if(g[x][y].size < z)
{
g[x][y] = node{y, z};
}
}
dij();
cout << ans[n] << "\n";
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...