HDU 2122 HDU Today【Floyd】
2024-09-12 09:18:32
题意:给出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 ;
}
最新文章
- C#开源日志Nlog入门
- iteye上总结的编程精华资源
- 设置TextView按下时变换文字颜色
- html/css 浮动练习之井字形布局
- OWIN的理解和实践(三) –Middleware开发入门
- mysql防止重复插入记录方法总结
- 机器学习实战 - 读书笔记(06) – SVM支持向量机
- CSS-3 Animation 的使用
- Windows cmd 颜色,字体,color font set up
- PCB优化设计(二) 转载
- 【动态规划】HDU 5791 Two
- Swift - 使用set,get确保索引加减在正常的范围内
- AndroidUI的组成部分GridView
- 在做vue计算属性,v-for处理数组时遇到的一个bug
- ajax请求 readyState为0 可能原因之一
- 一个极为简单的方法实现本地(离线)yum安装rpm包
- Vue.js指令实例
- spring-session+Redis实现Session共享
- 关于mysql的删除和安装
- 服务器上的 Git - 在服务器上搭建 Git
热门文章
- 驱动笔记 - file_operations
- javascript实现数据结构与算法系列:循环链表与双向链表
- 初识IOS
- HDU 2843 I Will Win(概率题?,怨念颇深,简单)
- 【剑指offer】连续子数组最大和
- POJ 1469
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
- 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach
- (3)初次接触off
- cellspacing与cellpadding