hdu 2923 map+Floyd 拉破车
2015-06-21 00:51
381 查看
有向图 具体方向看箭头 从起点到指定城市拉破车,一个城市可能有多个破车,一次只能拉一辆破车 也就是到了指定地点后要回到起点
假如有100辆破车 但是只有一个城市有 就得在起点与这个城市间往返100次
所以要用s1记录
然后 貌似这题是有重边的....
sscanf(s4,"%d" ,&w) ; 这个是错的=.= 在这折腾了半天
Sample Input
4 2 5 //城市数 破车数 边数
NewTroy Midvale Metrodale //起点 + 有破车的城市
NewTroy <-20-> Midvale
Midvale --50-> Bakerline
NewTroy <-5-- Bakerline
Metrodale <-30-> NewTroy
Metrodale --5-> Bakerline
0 0 0
Sample Output
1. 80 //Case. sum
# include <iostream> # include <cstdio> # include <cstring> # include <string> # include <algorithm> # include <cmath> # include <map> # define LL long long using namespace std ; const int MAXN = 110 ; const int INF = 0x3f3f3f3f; int dis[MAXN][MAXN]; int n ; map<string,int> mp ; void floyed()//节点从1~n编号 { int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(dis[i][k]+dis[k][j] < dis[i][j]) dis[i][j]=dis[i][k]+dis[k][j]; } int main() { // freopen("in.txt","r",stdin) ; int m , c ; int Case = 0; while (cin>>n>>c>>m) { if (n == 0 && c == 0 && m == 0) break ; Case++ ; int i , j ; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j)dis[i][j]=0; else dis[i][j]=INF; } mp.clear() ; string s1[1100] ,s2,s3; int l = 1 ; for (i = 0 ; i <= c ; i++) //起点+ 有破车的城市 { cin>>s1[i] ; if (!mp[s1[i]]) mp[s1[i]] = l++ ; } char s4[20] ; int w ; while(m--) { cin>>s2>>s4>>s3 ; bool f1 = 0 ; bool f2 = 0 ; if (!mp[s2]) mp[s2] = l++ ; if (!mp[s3]) mp[s3] = l++ ; int len = strlen(s4) ; if (s4[0] == '<') f1 = 1 ; if (s4[len-1] == '>') f2 = 1 ; sscanf(&s4[2],"%d" ,&w) ; if (f1 && w < dis[mp[s3]][mp[s2]]) dis[mp[s3]][mp[s2]] = w ; if (f2 && w < dis[mp[s2]][mp[s3]]) dis[mp[s2]][mp[s3]] = w ; } floyed() ; int sum = 0 ; for (i = 1 ; i <= c ; i++) { sum += dis[mp[s1[0]]][mp[s1[i]]] ; sum += dis[mp[s1[i]]][mp[s1[0]]] ; } cout<<Case<<". "<<sum<<endl ; } return 0; }View Code
相关文章推荐
- Redis服务部署
- Serialize and Deserialize a binary tree
- OC的NSURLSession
- 遗传算法的简单应用-巡回旅行商(TSP)问题的求解
- 字符串过滤掉所有最邻近的“<”和“>”之间的字符
- HDOJ 1501 Zipper(dfs)
- 自己实现基于key-value的NoSQL数据库(四)—— 新版本的数据库
- SSH整合实例详解
- [Hadoop] 在Ubuntu系统上一步步搭建Hadoop(单机模式)
- JS原型链
- leetcode 224 Basic Calculator
- 西普学院逆向writeup ---------你会吗??
- 多租户模式
- 交换排序-冒泡排序
- Zookeeper集群环境搭建实践
- poj 2388 Who's in the Middle
- VS2013快捷键
- 数据结构和算法-010 数组排序 希儿排序
- ENode框架Conference案例分析系列之 - 业务简介
- 配置trac