hdu 2680 Choose the best route

BFS.....

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 1111;
vector<int>abc[maxn];
int ji[maxn], tt[maxn][maxn], yy[maxn];
struct aaa{
    int node, time;
}dt[maxn*maxn];
bool cmp(const aaa&a, const aaa&b){ return a.time < b.time; }
int main()
{
    int n, m, mubiao;
    while (~scanf("%d%d%d", &n, &m, &mubiao))
    {
        int i, j;
        for (i = 0; i < maxn; i++) for (j = 0; j < maxn; j++) tt[i][j] = 999999999;
        for (i = 0; i < maxn; i++) ji[i] = 999999999, abc[i].clear();
        for (i = 0; i < m; i++)
        {
            int u, v, t;
            scanf("%d%d%d", &u, &v, &t);
            if (t < tt[v][u])
            {
                tt[v][u] = t;
                abc[v].push_back(u);
            }
        }
        int dd; scanf("%d", &dd);
        for (i = 0; i < dd; i++) scanf("%d", &yy[i]);
        int b = 0;
        dt[0].node = mubiao;
        dt[0].time = 0;
        for (i = 0; i <= b; i++)
        {
            for (j = 0; j < abc[dt[i].node].size(); j++)
            {
                if (dt[i].time + tt[dt[i].node][abc[dt[i].node][j]] < ji[abc[dt[i].node][j]])
                {
                    b++;
                    dt[b].node = abc[dt[i].node][j];
                    dt[b].time = dt[i].time + tt[dt[i].node][abc[dt[i].node][j]];
                    ji[abc[dt[i].node][j]] = dt[i].time + tt[dt[i].node][abc[dt[i].node][j]];
                }
            }
        }
        int ans = 999999999;
        for (i = 0; i < dd; i++) if (ji[yy[i]] < ans) ans = ji[yy[i]];
        if (ans == 999999999) printf("-1\n");
        else printf("%d\n", ans);
    }
    return 0;
}
时间: 2024-10-26 12:17:16

hdu 2680 Choose the best route的相关文章

hdu 2680 Choose the best route 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目意思:实质就是给定一个多源点到单一终点的最短路. 卑鄙题---有向图.初始化map时 千万不要写成 map[i][j] = map[j][i] = X. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespac

HDU 2680 Choose the best route(最短路)

Choose the best route Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2680 Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at

hdu 2680 Choose the best route 大年三十的首A 赤裸裸的Dijkstra 做这题需要一个小技巧

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8063    Accepted Submission(s): 2655 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

HDU 2680 Choose the best route(dijkstra+优先队列优化)

Choose the best route Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city’s traffic route, and the stati

HDU - 2680 - Choose the best route (经典最短路问题dijkstra算法!!)

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7671    Accepted Submission(s): 2524 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

hdu 2680 Choose the best route (Dijkstra &amp; 反向图)

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7764    Accepted Submission(s): 2581 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

HDU 2680 Choose the best route (最短路)

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7361    Accepted Submission(s): 2408 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

HDU 2680 Choose the best route &lt;SPFA算法+反向建图&gt;

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10690    Accepted Submission(s): 3454 Problem Description One day , Kiki wants to visit one of her friends. As she is liabl

hdu 2680 Choose the best route (SPFA算法)

本题链接:点击打开链接 本题大意: 输入n,m,s,代表有n个点,m条边,s代表终点.然后输入边,每条边输入p,q,t:p,q代表两个点,t表示边权,注意题目中说是从p指向q边,故应建立有向图.然后输入w表示有w个起点,然后输入起点:对于多个起点,如果对每个起点使用一次SPFA,则起点多的话可能会有点麻烦,所以不妨这样进行处理:另外设置一个不与题目中重合的点,将所有起点到此点的边权设为0,然后以此点为起点进行查找所找到的必然是最短的.具体请参考代码: #include<stdio.h> #in