dijstra最短路

*路程 HDU - 1874 *

今天稀的泥心情很好,没有带背包就出门了。然而他出门之后发现,由于自己之前铺的路太多了,有的路可能要绕很远才能到热的油的家。

已知稀的泥和热的油分别居住在的小区,以及稀的泥用稀的泥铺的所有道路,请你计算出稀的泥沿自己铺的路至少要走多远才能到热的油的小区。
Input
题目包含多组数据。

每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有小区的数目和稀的泥铺的道路的数目。小区分别以0~N-1编号。

接下来是M行道路信息。每一行有三个整数A,B,X(0<=A,B<N,A!=B,0<X<10000),表示小区A和小区B之间有一条长度为X的双向道路。

再接下一行有两个整数S,T(0<=S,T<N),分别代表稀的泥和热的油居住的小区。

Output
对于每组数据,请在一行里输出稀的泥最短需要走的距离。如果不存在从S到T的路线,就输出-1.

Sample Input
3 3
0 1 1
0 2 3
1 2 1
0 2
3 1
0 1 1
1 2
Sample Output
2
-1
Hint
不要问干的土在哪里。干的土在二基楼迷路了。

#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int inf = 0x7ffffff;
const int N = 210;
int g[N][N];
int s, e;
int d[N];
bool vis[210];
int n, m;
void dij(int x) {
    memset(vis, false, sizeof(vis));
    fill(begin(d), end(d), inf);
    d[x] = 0;
    for (int i = 0; i < n; i++) {
        int u = -1, min = inf;
        for (int j = 0; j < n; j++) {
            if (!vis[j] && d[j] < min) {
                u = j;
                min = d[j];
            }
        }
        if (u == -1)return;
        vis[u] = true;
        for (int v = 0; v < n; v++) {
            if (!vis[v] && g[u][v] != inf) {
                if (d[u] + g[u][v] < d[v])d[v] = d[u] + g[u][v];
            }
        }
    }
}
int main()
{
    while (cin >> n >> m) {
        int x, y, z;
        fill(g[0], g[0] + N * N, inf);
        for (int i = 0; i < m; i++) {
            cin >> x >> y >> z;
            if(g[x][y]>z)//重点注意取最小的
            g[x][y] = g[y][x] = z;
        }
        cin >> s >> e;
        dij(s);
        if (d[e] == inf)cout << "-1" << endl;
        else cout << d[e] << endl;
    }
}
全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务