这道题貌似在原来学长给我们的搞的小比赛中出过!

这次又让我遇到,果断拿下!

不过方法很蠢,跑了1000多ms,虽然要求5000ms以内!

题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距离!就是个样子滴!

只不过这道题更切合实际,给你的位置是字符串!

我的处理方法是将字符串转化为数字,数字不就是我们最熟悉的了吗!嘎嘎嘎···················

#include<stdio.h>

#include<string.h>
#define MAX 1000000000000

int main()

{

    __int64 map[200][200],i,j,k,n,m,r,t,s;

    char str[200][200],str1[200],str2[200];

    while(scanf("%I64d",&n)!=EOF&&n>0)

    {

        for(i=0;i<=190;i++)

            for(j=0;j<=190;j++)

                map[i][j]=MAX;

        scanf("%s %s",str1,str2);

        

        strcpy(str[0],str1);

        strcpy(str[1],str2);

        m=2;

        for(j=1;j<=n;j++)

        {

            scanf("%s %s %I64d",str1,str2,&s);

            for(i=0;i<m;i++)//转化的过程

                if(strcmp(str[i],str1)==0)

                {

                    r=i;break;

                }

                if(i==m)

                {

                    strcpy(str[m],str1);

                    r=m;

                    m++;

                }

                for(i=0;i<m;i++)

                    if(strcmp(str[i],str2)==0)

                    {

                        t=i;break;

                    }

                if(i==m)

                {

                    strcpy(str[m],str2);

                    t=m;

                    m++;

                }

                if(map[r][t]>s)

                {

                map[r][t]=s;

                map[t][r]=s;

                }

        }

        if(strcmp(str[0],str[1])==0)//特别注意,始点与终点相同的情况!这点使我wrong了几次!哎···,当知道这个特例时我将这个if语句放在前面了,结果还是wrong了,想了好久//才明白,原来是continue直接跳过了整个循环导致后面的内容输不进来了!囧!!!

        {

            printf("0\n");

            continue;

        }

        for(k=0;k<m;k++)

            for(i=0;i<m;i++)

                for(j=0;j<m;j++)

                    if(map[i][j]>map[i][k]+map[k][j])

                        map[i][j]=map[i][k]+map[k][j];

                    if(map[0][1]==MAX)

                        printf("-1\n");

                    else

                        printf("%I64d\n",map[0][1]);

    }

    return 0;

}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112

hdu 2112 HDU Today (floyd算法)的更多相关文章

  1. HDU 2066 最短路floyd算法+优化

    http://acm.hdu.edu.cn/showproblem.php?pid=206 题意 从任意一个邻居家出发 到达任意一个终点的 最小距离 解析 求多源最短路 我想到的是Floyd算法 但是 ...

  2. hdu 2112 HDU Today

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...

  3. HDU 2112 HDU Today(Dijkstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...

  4. HDU 2112 HDU Today (Dijkstra算法)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDU 2112 HDU Today &lt;SPFA算法+map函数&gt;

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. hdu 2112 HDU Today (最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给出起点和终点,然后算出最短的路. 不过有好多细节要注意: (1)起始点和终止点相等的 ...

  7. HDU 2112 HDU Today(STL MAP + Djistra)

    题目链接:HDU Today 立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map 题目非常水,可是错了N遍.手贱了.本题不优点理的就是把地名转化为数字 #include <i ...

  8. hdu 2112 HDU Today 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloo ...

  9. HDU 2112 HDU Today(最短路径+map)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. CSS — 贝塞尔曲线(cubic-bezier)

    cubic-bezier 又称三次贝塞尔,主要是为 animation 生成速度曲线的函数,规定是 cubic-bezier(<x1>, <y1>, <x2>, & ...

  2. (四)MyBatis关系映射

    第一节:一对一关系实现 需要实现一对一的关系,首先我们有两张表,t-addree和t_student. CREATE TABLE `t_address` ( `id` ) NOT NULL AUTO_ ...

  3. Storm(一)Storm的简介与相关概念

    一.Storm的简介 官网地址:http://storm.apache.org/ Storm是一个免费开源.分布式.高容错的实时计算系统.Storm令持续不断的流计算变得容易,弥补了Hadoop批处理 ...

  4. 跟我一起学WPF(1):WPF的UI设计语言——XAML

    XAML是什么 XAML全称是Extensible Application Markup Language (可扩展应用程序标记语言),是专门用于WPF技术中的UI设计语言. XAML基础 XAML是 ...

  5. Django实战(18):提交订单

    前面的内容已经基本上涵盖了Django开发的主要方面,我们从需求和界面设计出发,创建模型和修改模型,并通过scaffold作为开发的起点:在scaffold的基础上重新定制模板,并且通过Model类和 ...

  6. 使用apache的ab命令进行压测

    1. 背景:互联网发达的今天,大大小小的网站如雨后春笋,不断出现,但是想要做出一个网站很简单,但是想要做好一个网站,非常非常难,首先:网站做好之后的功能怎么样这都是次要的,主要的是你的网站能承受怎么样 ...

  7. Servlet的一点小结

    1.什么是servlet servlet是一个Java applet,一个帮助程序.用于帮助浏览器从服务器中获取资源.浏览器-servlet-服务器三者的关系如图所示. 2.servlet的生命周期 ...

  8. 深入理解yield

    yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: 1 2 3 def ad ...

  9. bzoj5102 [POI2018]Prawnicy 线段树

    $bzoj$跑的太慢了...... 我们考虑用线段树来解决这个问题 考虑扫描线 当扫到左端点$i$时,我们把线段$i$加入线段树 同时,对于每个左端点$i$,我们在线段树上二分出最远的$r$满足$r$ ...

  10. 2017 ACM Amman Collegiate Programming Contest

    A - Watching TV /* 题意:求出出现次数最多的数字 */ #include <cstdio> #include <algorithm> #include < ...