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

题目大意:给出起点和终点,然后算出最短的路。

不过有好多细节要注意:

(1)起始点和终止点相等的时候,这里注意不能直接输出0,必须用标记,因为数据可能还没有处理完!!!此处贡献n次wa。

(2)这里是某大神教我的用map进行转换,将字符串转换成数字,值得参考。map<string,int>M,V;不过这里同样是wa了好多次。要注意的是将最先输入的开始和结束的点也要放到这个map里面。

(3)再就是注意的dijkstra这个算法的应用了。

祝大家好运~wa了14次的我眼泪掉下来。。。。。

 #include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
#define INF 9999999
int k,Map[][],node[];
map<string,int>M,V; void set()
{
for (int i=; i<; i++)
{
node[i]=INF;
for (int j=; j<; j++)
{
if (i!=j)
Map[i][j]=INF;
else
Map[i][j]=;
}
}
} void dijkstra(int m)
{
int vis[]= {};
int tm=m;
vis[m]=;
node[m]=;
for (int j=; j<k; j++)
{
int Min=INF;
for (int i=; i<k; i++)
if (!vis[i])
{
if (node[i]>node[tm]+Map[tm][i])
node[i]=node[tm]+Map[tm][i];
if (Min>node[i])
{
Min=node[i];
m=i;
}
//cout<<i<<" "<<node[i]<<" "<<Map[tm][i]<<endl;
}
vis[m]=;
tm=m;
}
} int main()
{
bool flag;
int t,n;
while (scanf("%d",&n),n!=-)
{
flag=;
M.clear();
V.clear();
set();
//memset(Map,INF,sizeof(Map));
char start[],end[],s[],e[];
k=;
scanf("%s%s",start,end);
if (strcmp(start,end)==)
flag=;
if(n==)
{
printf("-1\n");
continue;
}
M[start]=;
M[end]=;
while (n--)
{
scanf("%s%s%d",s,e,&t);
if(!V[s])
{
V[s]=;
M[s]=k++;
//cout<<k<<endl;
}
if(!V[e])
{
V[e]=;
M[e]=k++;
//cout<<k<<endl;
}
if (Map[M[s]][M[e]]>t)
Map[M[s]][M[e]]=Map[M[e]][M[s]]=t;
}
//set();
//cout<<k<<endl;
if (flag)
{
printf ("0\n");
continue;
}
dijkstra(M[start]);
if(node[M[end]]==INF)
printf ("-1\n");
else
printf ("%d\n",node[M[end]]);
}
return ;
}

hdu 2112 HDU Today (最短路)的更多相关文章

  1. hdu 2112 HDU Today

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

  2. HDU 2112 HDU Today(Dijkstra)

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

  3. HDU 2112 HDU Today 最短路

    题目描述: Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这 ...

  4. hdu 2112(字典树+最短路)

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

  5. hdu 2112 HDU Today (最短路,字符处理)

    题目 题目很简单,只是多了对地名转化为数字的处理,好吧,这我也是参考网上的处理办法,不过大多数的人采用map来处理 注意初始化注意范围,不然会wa!!!(这是我当时wa的原因org) 大家容易忽视的地 ...

  6. hdu 2112 HDU Today 解题报告

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

  7. HDU 2112 HDU Today (Dijkstra算法)

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

  8. hdu 2112 HDU Today (floyd算法)

    这道题貌似在原来学长给我们的搞的小比赛中出过! 这次又让我遇到,果断拿下! 不过方法很蠢,跑了1000多ms,虽然要求5000ms以内! 题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距 ...

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

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

随机推荐

  1. nmon Analyser分析仪

    nmon Analyser官网: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+System ...

  2. [推荐]spring cloud 详解

    http://blog.csdn.net/column/details/15197.html

  3. LeetCode - 3. Longest Substring Without Repeating Characters(388ms)

    Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...

  4. 论文翻译 - Multiagent Bidirectionally-Coordinated Nets Emergence of Human-level Coordination in Learning to Play StarCraft Combat Games

    (缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) Multiagent Bidirectionally-Coordinated N ...

  5. Django,Celery, rabbitmq

    学习Django 2 by Example书中的456页,运行 celery -A myshop worker -l info 报错.虽然特别指定了Celery的版本,也没用.之前使用的是标准安装:下 ...

  6. hyperledger composer

    hyperledger composer 网站搜集 https://hyperledger.github.io/composer/latest/introduction/introduction.ht ...

  7. DP入门(2)——DAG上的动态规划

    有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础.很多问题都可以转化为DAG上的最长路.最短路或路径计数问题. 一.DAG模型 [嵌套矩形问题] 问题 ...

  8. 关于Oracle

    Oracle初学者必知的100个问题 1. Oracle安装完成后的初始口令?  internal/oracle  sys/change_on_install  system/manager  sco ...

  9. java对数组的操作

    1 拷贝数组 数组全拷贝 数组定位拷贝 2 判断数组是否相等(每个元素都对应相等) 3 数组和集合的相互转化 import java.util.Arrays; import java.util.Lis ...

  10. charles和Fiddler感觉哪个更好用

    1.fiddler还可以抓HTTPS的包,解析出来都可以     2.charles更直观,可能是我先用charles的缘故.charles遍历一个站点,可以右键另存,保存全站文件资源.扒站首选, c ...