zoukankan      html  css  js  c++  java
  • 最难的工作 /// SPFA模板 oj1396

    题目大意:

    Input

    第一行是一个整数T ( T ≤ 100 ),表示测试用例的个数。

    每个测试用例的第一行是两个整数 n 和 m ( 1 ≤ n ≤ 200 , 0 ≤ m ≤ 10000 ),分别表示交汇点的个数以及路的条数。

    接下来的m行都有3个整数 i, j, k,表示在城市i 和城市j 之间有一条长度为k的路。

    假设交汇点从1到n编号。你的出发点是1,目的地是n。

    道路都是双向的。

    Output

    每个测试用例输出一行,一个整数:逃跑的最短距离。如果无路可逃,输出-1。

    Sample Input

    1
    2 1
    1 2 3

    Sample Output

    3

    #include <bits/stdc++.h>
    #define INF 0x3f3f3f3f
    #define P pair<int,int>
    #define mp(i,j) make_pair(i,j)
    using namespace std;
    struct NODE { int to,co; };
    int a[205][205];
    int dis[205],flag[205];
    int main()
    {
        int t;
        while(~scanf("%d",&t)) {
            while(t--) {
                int n,m; scanf("%d%d",&n,&m);
                memset(a,INF,sizeof(a));
                while(m--) {
                    int u,v,w; scanf("%d%d%d",&u,&v,&w);
                    a[u][v]=a[v][u]=min(a[u][v],w);
                }
                memset(dis,INF,sizeof(dis));
                memset(flag,0,sizeof(flag));
                queue <P> q;
                q.push(mp(0,1)); dis[1]=0; flag[1]=1;
                while(!q.empty()) {
                    P u=q.front(); q.pop();
                    flag[u.second]=0; /// 出队 标为0
                    for(int i=1;i<=n;i++) {
                        if(flag[i] || a[u.second][i]==INF)
                            continue; /// 已在队列内 或两点间不存在路径
                        if(dis[i]>u.first+a[u.second][i]) {
                            dis[i]=u.first+a[u.second][i];
                            flag[i]=1; /// 入队 标为1
                            q.push(mp(dis[i],i));
                        } /// 更新最短路
                    }
                }
                if(dis[n]==INF) printf("-1
    ");
                else printf("%d
    ",dis[n]);
            }
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    SSH公/私秘钥的生成及使用
    使用docker-compose部署Kafka集群
    使用docker或者docker-compose部署Zookeeper集群
    zookeeper相关概念
    redis相关概念
    mq-rabbitmq
    mysql事务隔离级别
    新自动化测试框架+微信机器人构建思路
    当eclipse调用tomcat的时候发生了什么?
    .net 获取配置项
  • 原文地址:https://www.cnblogs.com/zquzjx/p/9148067.html
Copyright © 2011-2022 走看看