zoukankan      html  css  js  c++  java
  • 最短路 || POJ 2387 Til the Cows Come Home

    从点N到1的最短路

    *记得无向图两个方向都要建边就好了……

    以及多组数据= =

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    using namespace std;
    #define SZ 4005
    #define INF 1e9+10
    int head[SZ],nxt[SZ],tot = 0;
    struct edge
    {
        int t,d;
    }l[SZ];
    void build(int f,int t,int d)
    {
        l[++tot] = (edge){t,d};
        nxt[tot] = head[f];
        head[f] = tot;
    }
    queue<int> q;
    bool use[SZ];
    int dist[SZ];
    int spfa(int s, int e)
    {
        memset(dist, 63, sizeof(dist));
        memset(use, 0, sizeof(use));
        use[s] = 1;
        dist[s] = 0;
        q.push(s);
        while(!q.empty())
        {
            int u = q.front(); q.pop();
            use[u] = 0;
            for(int i = head[u];i;i = nxt[i])
            {
                int v = l[i].t;
                if(dist[v] > dist[u] + l[i].d)
                {
                    dist[v] = dist[u] + l[i].d;
                    if(!use[v])
                        use[v] = 1, q.push(v);
                }
            }
        }
        return dist[e];
    }
    int main()
    {
        int T, N;
        while(scanf("%d %d", &T, &N) != EOF)
        {
            memset(head, 0, sizeof(head));
            tot = 0;
            for(int i = 0; i < T; i++)
            {
                int x, y, z;
                scanf("%d %d %d", &x, &y, &z);
                build(x, y, z);
                build(y, x, z);
            }
            printf("%d
    ", spfa(N, 1));
        }
        return 0;
    }
  • 相关阅读:
    JDBC与JAVA数据库编程
    Java中的网络编程
    OracleDBA之表管理
    OracleDBA之用户管理
    OracleDBA之数据库管理
    Java中的多线程
    JavaSE高级之GUI编程
    JavaSE高级之集合类
    Java面向对象练习
    Java基本语法练习
  • 原文地址:https://www.cnblogs.com/pinkglightning/p/8426553.html
Copyright © 2011-2022 走看看