zoukankan      html  css  js  c++  java
  • HDU_2066 一个人的旅行(Dijkstra)

      开始用Floyd做的,TLE!更二的时我自己找了一组1 1000 的数据,4S才算出来,本身程序就有问题,我居然还交上去了。。。后来用Dijkstra做,过了。。。200+ms;

    #include <iostream>
    #include
    <cstdio>
    #include
    <cstring>

    using namespace std;

    const int N = 1005;
    const int inf = 1000000;

    int dis[N][N];
    int low[N];
    int vis[N];
    int num1[N];
    int num2[N];

    void Dijkstra(int n, int v)
    {
    int flag, min, i, j;
    for(i = 1; i <= n; i++)
    {
    low[i]
    = dis[v][i];
    vis[i]
    = 0;
    }

    vis[v]
    = 1;
    for(i = 2; i <= n; i++)
    {
    min
    = inf; flag = v;
    for(j = 2; j <= n; j++)
    {
    if(min > low[j] && !vis[j])
    {
    min
    = low[j];
    flag
    = j;
    }
    }
    vis[flag]
    = 1;

    for(j = 2; j <= n; j++)
    if(!vis[j] && dis[flag][j] < inf)
    {
    int tmp = low[flag] + dis[flag][j];
    if(tmp < low[j])
    low[j]
    = tmp;
    }
    }

    }
    int main()
    {
    //freopen("data.in", "r", stdin);

    int t, s, d;
    while(~scanf("%d%d%d", &t, &s, &d))
    {
    int a, b, c, i, j, max = -inf;

    for(i = 1; i <= N; i++)
    for(j = 1; j <= N; j++)
    {
    if(i == j)
    dis[i][j]
    = 0;
    else
    dis[i][j]
    = inf;
    }

    for(i = 1; i <= t; i++)
    {
    scanf(
    "%d%d%d", &a, &b, &c);
    if(c < dis[a][b])
    dis[a][b]
    = dis[b][a] = c;
    if(max < a) max = a;
    if(max < b) max = b;
    }

    for(i = 1; i <= s; i++)
    scanf(
    "%d", &num1[i]);

    for(i = 1; i <= d; i++)
    scanf(
    "%d", &num2[i]);

    int min = inf;
    for(i = 1; i <= s; i++)
    {
    Dijkstra(max, num1[i]);
    for(j = 1; j <= d; j++)
    {
    if(min > low[num2[j]])
    min
    = low[num2[j]];
    }
    }
    printf(
    "%d\n", min);
    }
    }
  • 相关阅读:
    Oracle中TO_DATE格式
    实现带查询功能的Combox控件
    Combox和DropDownList控件的区别
    C# 获取字符串中的数字
    C# try catch finally 执行
    树形DP codevs 1814 最长链
    codevs 2822 爱在心中
    匈牙利算法 cojs.tk 搭配飞行员
    匈牙利算法 codevs 2776 寻找代表元
    2016-6-19 动态规划,贪心算法练习
  • 原文地址:https://www.cnblogs.com/vongang/p/2169584.html
Copyright © 2011-2022 走看看