HDU 2923 Einbahnstrasse
来源:互联网 发布:ssm打印sql语句 编辑:程序博客网 时间:2024/05/16 10:10
题目链接
题目意思
给你三个数,N,C,R分别代表N个地点,C辆车和M条路,已知这M条路有单向的也有双向的,现在给你一个起点和C个终点,要你求从起点开始走到终点再走回的最短距离。
解题思路
由于路有双向的有单向的,所以去的路与返回的路径不一定相同,所以就求起点到终点的最短距离加上终点的起点的最短距离就好了,跑一遍最短路就行。要注意的是数据的输入时字符串,要记得处理一下。
代码部分
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <queue>#include <map>#define INF 0x3f3f3f3fusing namespace std;int n,c,r;int maps[1005][1005];char str[1005][100];map <string,int> M;void floyd(){ for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(maps[i][j]>maps[i][k]+maps[k][j]) maps[i][j]=maps[i][k]+maps[k][j];}int main(){ char s1[100],s3[100]; char from,to; int sum,cnt,dis,start,cas=1; while(~scanf("%d%d%d",&n,&c,&r),n+c+r) { sum=0; M.clear(); for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) maps[i][j]=INF; for(int i=0; i<=c; i++) scanf("%s",str[i]); cnt=1; for(int i=0; i<r; i++) { scanf("%s %c-%d-%c %s",s1,&from,&dis,&to,s3); if(!M[s1]) M[s1]=cnt++; if(!M[s3]) M[s3]=cnt++; int x=M[s1],y=M[s3]; if(from=='<'&&dis<maps[y][x]) maps[y][x]=dis; if(to=='>'&&dis<maps[x][y]) maps[x][y]=dis; } floyd(); start=M[str[0]]; for(int i=1; i<=c; i++) sum+=maps[start][M[str[i]]]+maps[M[str[i]]][start]; printf("%d. %d\n",cas++,sum); } return 0;}
阅读全文
0 0
- HDU 2923 Einbahnstrasse
- hdu 2923 Einbahnstrasse
- HDU 2923 Einbahnstrasse
- hdu 2923 Einbahnstrasse
- hdu 2923 Einbahnstrasse
- hdu 2923 Einbahnstrasse
- hdu 2923:Einbahnstrasse
- HDU 2923 Einbahnstrasse
- HDU 2923 Einbahnstrasse
- hdu 2923 Einbahnstrasse
- HDU 2923 Einbahnstrasse (Flord)
- hdu 2923 Einbahnstrasse【floyd】
- HDU-2923-Einbahnstrasse
- HDU 2923:Einbahnstrasse
- hdu 2923 Einbahnstrasse
- HDU 2923 Einbahnstrasse
- HDU 2923 Einbahnstrasse
- HDU 2923-Einbahnstrasse
- 二分法个人分析
- SpringBoot的两种部署方法:jar和war
- Maven详解
- 第一个tensorflow小程序——异或门实现
- 生活小记25
- HDU 2923 Einbahnstrasse
- 6 配置ssh 免密码登陆
- linux每天一命令 : 用户增删
- 传输层TCP和UDP的区别分析与应用场景
- python爬虫 利用cookie登录人人网
- 关于同步传值
- 数据处理——白化whitening
- C++隐式的类类型转换,explicit关键字介绍。
- Web前端:自适应居中方法总结