HDU Tody HDU2112

不想用floyd了 也不一定适合  floyd只能处理小数据

dijkstra算法

wa了很久   一个是dijkstra里面的u   导致RE了无数次   下标溢出

还有就是注意细节  当起点和终点是一个地方的时候  输出0

#include<iostream>
#include<map>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
#define INF 99999999
int m1[155][155];
map<string,long long>ma;
int dis[155];
int vis[155];int c;

void di()
{   memset(vis,0,sizeof(vis));
    for(int i=1;i<=c;i++)
         dis[i]=m1[1][i];
    vis[1]=1;
    for(int i=0;i<c-1;i++)
    {
        int minn=INF;
        int u;
        for(int j=1;j<=c;j++)
        {
            if(vis[j]==0&&dis[j]<minn)
            {
                u=j;
                minn=dis[j];

            }

        }
        vis[u]=1;
        for(int j=1;j<=c;j++)
        {
            if(vis[j]==0&&dis[u]+m1[u][j]<dis[j])
            {
                dis[j]=dis[u]+m1[u][j];
            }

        }

    }

}

int main()
{
 int n;

 while(scanf("%d",&n)==1&&n!=-1)
 {    c=0;
      ma.clear();
     string s1,s2;
    int ok=1;
     cin>>s1>>s2;if(s1==s2){ok=0;}
     ma[s1]=++c;
     ma[s2]=++c;
     int time1;

     for(int i=0;i<=153;i++)
        for(int j=0;j<=153;j++)
     {
         if(i==j)m1[i][j]=0;
         else m1[i][j]=INF;

     }

     while(n--)
     {
         cin>>s1>>s2>>time1;
         if(ma[s1]==0)ma[s1]=++c;
         if(ma[s2]==0)ma[s2]=++c;
         if(time1<m1[ ma[s1] ][ ma[s2]  ])
         {
             m1[ ma[s1] ][ ma[s2]  ]=m1[ ma[s2] ][ ma[s1] ]=time1;

         }

     }

     di();

  if(!ok)printf("0\n");
   else {
     if(dis[2]!=INF)
     printf("%d\n",dis[2]);
     else
        printf("-1\n");
   }

 }

return 0;
}

原文地址:https://www.cnblogs.com/bxd123/p/10326388.html

时间: 2024-11-05 19:35:11

HDU Tody HDU2112的相关文章

hdu2112(HDU Today 简单最短路)

Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,徐总对当地的交通还是不太了解.有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格).徐总经常会问蹩脚的英文问路:“Can

Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相同距离为0)不能到达输出-1. 说真的开始看到这个题,我想利用数字标记那些地名,再利用dijsktra算法,但不知道如何用代码实现,后来在网上看博客 才知道有这样一个头文件#include<map>,map 映射,可以有这种效果,那么这题也就so easy!了, 我的AC代码 #include&l

HDU2112 HDU Today 【Dijkstra】

HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14743    Accepted Submission(s): 3471 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候

hdu-2112 HDU Today(最短路)

题目链接: HDU Today Time Limit: 15000/5000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,

【最短路】HDU2112:HDU Today

Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,徐总对当地的交通还是不太了解.有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格).徐总经常会问蹩脚的英文问路:“Can

hdu2112 HDU Today 基础最短路

这题的关键是把车站的名字转化为点的编号.我用的是map.声明一个map<string,int> st,然后按照字符串出现的次序给st赋值.例如:st[s1]=2;代表这字符串s1出现的次序是2.出现过的已经被标记.不会重复.接下来用模版就好.不过有一点要注意的是当起点和终点一样是,要输出0. #include<iostream> #include<cstdio> #include<cstring> #include<string> #includ

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往