题意:给出n条路,起点和终点,问最短距离

用map处理一下地名,再用floyd

可是不懂的是:为什么INF定义成0x7fffffff就输出一堆奇怪的东西,改成100000000就可以了

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
#define mod=1e9+7;
using namespace std; typedef long long LL;
const int INF = ;
const int maxn=;
map<string,int> mp;
int d[maxn][maxn]; int main(){
int n,i,j,k,w;
string st,en,s1,s2;
while(scanf("%d",&n)!=EOF&&(n!=-)){
mp.clear();
int cnt=; for(i=;i<maxn;i++){
for(j=;j<maxn;j++){
if(i==j) d[i][j]=;
else d[i][j]=INF;
}
} cin>>st>>en;
if(!mp[st]) mp[st]=cnt++;
if(!mp[en]) mp[en]=cnt++; for(i=;i<n;i++){
cin>>s1>>s2>>w;
if(!mp[s1]) mp[s1]=cnt++;
if(!mp[s2]) mp[s2]=cnt++; if(d[mp[s1]][mp[s2]]>w) d[mp[s1]][mp[s2]]=d[mp[s2]][mp[s1]]=w;
} for(k=;k<cnt;k++)
for(i=;i<cnt;i++)
for(j=;j<cnt;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]); if(d[mp[st]][mp[en]]==INF) printf("-1\n");
else printf("%d\n",d[mp[st]][mp[en]]);
}
return ;
}

最新文章

  1. C#开源日志Nlog入门
  2. iteye上总结的编程精华资源
  3. 设置TextView按下时变换文字颜色
  4. html/css 浮动练习之井字形布局
  5. OWIN的理解和实践(三) –Middleware开发入门
  6. mysql防止重复插入记录方法总结
  7. 机器学习实战 - 读书笔记(06) – SVM支持向量机
  8. CSS-3 Animation 的使用
  9. Windows cmd 颜色,字体,color font set up
  10. PCB优化设计(二) 转载
  11. 【动态规划】HDU 5791 Two
  12. Swift - 使用set,get确保索引加减在正常的范围内
  13. AndroidUI的组成部分GridView
  14. 在做vue计算属性,v-for处理数组时遇到的一个bug
  15. ajax请求 readyState为0 可能原因之一
  16. 一个极为简单的方法实现本地(离线)yum安装rpm包
  17. Vue.js指令实例
  18. spring-session+Redis实现Session共享
  19. 关于mysql的删除和安装
  20. 服务器上的 Git - 在服务器上搭建 Git

热门文章

  1. 驱动笔记 - file_operations
  2. javascript实现数据结构与算法系列:循环链表与双向链表
  3. 初识IOS
  4. HDU 2843 I Will Win(概率题?,怨念颇深,简单)
  5. 【剑指offer】连续子数组最大和
  6. POJ 1469
  7. 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
  8. 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach
  9. (3)初次接触off
  10. cellspacing与cellpadding