原因没找出来,有神犇帮本蒟蒻个忙吗
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int Maxn = 5e4;
struct Edge
{
int u, v, w;
};
vector<Edge> e[Maxn];//存边
queue<long long> que;
long long Road[Maxn];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
Road[n] = -1;
for(int i = 1; i <= m; i++)
{
int from, to, len;
scanf("%d %d %d", &from, &to, &len);
Edge now;
now.u = from;
now.v = to;
now.w = len;
e[from].push_back(now);
}
que.push(1);//入队
while(!que.empty())//队列非空
{
for(int i = 0; i < e[que.front()].size(); i++)//遍历
{
que.push(e[que.front()][i].v);//入队
Road[e[que.front()][i].v] = max(Road[e[que.front()][i].v], Road[e[que.front()][i].u] + e[que.front()][i].w);//改变a->b的最大值
}
que.pop();//出队
}
printf("%lld\n", Road[n]);
return 0;
}
(话说邻接表挂空间是不是有点过分了)