hdu 2112 HDU Today (最短路)
题目链接: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 (最短路)的更多相关文章
- hdu 2112 HDU Today
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...
- HDU 2112 HDU Today(Dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...
- HDU 2112 HDU Today 最短路
题目描述: Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这 ...
- hdu 2112(字典树+最短路)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2112 HDU Today (最短路,字符处理)
题目 题目很简单,只是多了对地名转化为数字的处理,好吧,这我也是参考网上的处理办法,不过大多数的人采用map来处理 注意初始化注意范围,不然会wa!!!(这是我当时wa的原因org) 大家容易忽视的地 ...
- hdu 2112 HDU Today 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloo ...
- HDU 2112 HDU Today (Dijkstra算法)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 2112 HDU Today (floyd算法)
这道题貌似在原来学长给我们的搞的小比赛中出过! 这次又让我遇到,果断拿下! 不过方法很蠢,跑了1000多ms,虽然要求5000ms以内! 题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距 ...
- HDU 2112 HDU Today(STL MAP + Djistra)
题目链接:HDU Today 立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map 题目非常水,可是错了N遍.手贱了.本题不优点理的就是把地名转化为数字 #include <i ...
随机推荐
- Ubuntu下使用Git_1
这里小小的记录一下我在Ubuntu下使用版本控制工具Git的过程.在学习使用Git的时候,我发现了一个很好的网站,这里分享一下,大家共同学习. 猴子都能懂的Git入门 http://git.wiki. ...
- Fluentd插件使用方法
这里主要介绍从MongoDB同步数据到ODPS.ruby环境的搭建以及fluent_plugin_mongo_odps插件的安装.1.准备工作1.1安装环境要求Ruby 2.1以上Gem 2.4.5以 ...
- LINQ学习笔记——(2)Lambda表达式
最基本的 Lambda 表达式语法: (参数列表)=>{方法体} 说明: 参数列表中的参数类型可以是明确类型或者是推断类型 如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出 ...
- Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误)
Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误) Truffle3.0集成NodeJS并完全跑通(附详细实例,可能的错误) 升级到Truffle3.0 如果之前安装的是Truf ...
- MySQL 初识01
最近开始学习MySQL 所以将这两天所学习到的知识简单小结一下 1.status 显示数据库信息 2.数据类型: a.字符串: char(m):固定长度的字符,最多255个字符: varchar(m) ...
- LTE QOS
http://wenku.baidu.com/link?url=ziFIkdKaC7MU2RY-bTOp2bt87WFPw5_02bqmYs5W6w4ktOfPHEcWesK1U2T7YiyXjVSM ...
- Flink之状态之savepoint
1.总览 savepoints是外部存储的自包含的checkpoints,可以用来stop and resume,或者程序升级.savepoints利用checkpointing机制来创建流式作业的状 ...
- calendar components
calendar components 日历 angular, react, vue ??? react https://github.com/intljusticemission/react-big ...
- Spark程序
Spark认识&环境搭建&运行第一个Spark程序 2017-07-09 17:17 by 牛仔裤的夏天, 181 阅读, 0 评论, 收藏, 编辑 摘要:Spark作为新一代大数据计 ...
- HTML5<canvas>标签:使用canvas元素在网页上绘制四分之一圆(3)
前几天自己做了个四分之一的圆,放到手机里面测试.效果不是很好.于是今天通过查资料,找到了canvas.自己研究了一天,发现可以使用canvas画圆.代码如下: <!doctype html> ...