#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
const int N=100010;
int h[N], w[N], e[N], ne[N], cur;
int d[N];
bool st[N];
int n,m;
void add(int v1,int v2,int wg)
{
e[cur] = v2;
w[cur] = wg;
ne[cur] = h[v1];
h[v1] = cur ++;
}
int spfa() {
memset(d, 0x3f, sizeof d);//初始化
d[1] = 0;
queue<int> q;
q.push(1);//1为图中第一个点且1到其本身的最短路已知,即为0,将1入队
st[1] = true;//入队将节点标记为true
while (q.size()) {
int t = q.front();
q.pop();
st[t] = false;//出队将节点标记为false
for (int i = h[t]; i != -1; i = ne[i]) {//将与节点t直接有边相连的节点j进行遍历,如果j能通过点t进行松弛操作 , 则将j入队
int j = e[i];
if (d[j] > d[t] + w[i]) {//如果能进行松弛
d[j] = d[t] + w[i];
if (!st[j]) {
q.push(j);
st[j] = true;
}
}
}
}
return d[n];
}
int main()
{
cin >> n >> m;
memset(h, -1, sizeof(h));
while (m -- ) {
int v1, v2, w;
cin >> v1 >> v2 >> w;
add(v1, v2, w);
}
int t = spfa();
if (t == 0x3f3f3f3f) cout << "impossible" << endl;
else cout << t;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-05-14 编程一小时2023.5.14