HDU - 2923 - Einbahnstrasse
题目:
Einbahnstrasse
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1548 Accepted Submission(s): 428
e (German for a one-way street) is a street on which vehicles should
only move in one direction. One reason for having one-way streets is to
facilitate a smoother flow of traffic through crowded areas. This is
useful in city centers, especially old cities like Cairo and Damascus.
Careful planning guarantees that you can get to any location starting
from any point. Nevertheless, drivers must carefully plan their route in
order to avoid prolonging their trip due to one-way streets.
Experienced drivers know that there are multiple paths to travel between
any two locations. Not only that, there might be multiple roads between
the same two locations. Knowing the shortest way between any two
locations is a must! This is even more important when driving vehicles
that are hard to maneuver (garbage trucks, towing trucks, etc.)
You
just started a new job at a car-towing company. The company has a
number of towing trucks parked at the company's garage. A tow-truck
lifts the front or back wheels of a broken car in order to pull it
straight back to the company's garage. You receive calls from various
parts of the city about broken cars that need to be towed. The cars have
to be towed in the same order as you receive the calls. Your job is to
advise the tow-truck drivers regarding the shortest way in order to
collect all broken cars back in to the company's garage. At the end of
the day, you have to report to the management the total distance
traveled by the trucks.
program will be tested on one or more test cases. The first line of
each test case specifies three numbers (N , C , and R ) separated by one
or more spaces. The city has N locations with distinct names,
including the company's garage. C is the number of broken cars. R is
the number of roads in the city. Note that 0 < N < 100 , 0<=C
< 1000 , and R < 10000 . The second line is made of C + 1 words,
the first being the location of the company's garage, and the rest being
the locations of the broken cars. A location is a word made of 10
letters or less. Letter case is significant. After the second line,
there will be exactly R lines, each describing a road. A road is
described using one of these three formats:
A -v -> B
A <-v - B
A <-v -> B
A
and B are names of two different locations, while v is a positive
integer (not exceeding 1000) denoting the length of the road. The first
format specifies a one-way street from location A to B , the second
specifies a one-way street from B to A , while the last specifies a
two-way street between them. A , ``the arrow", and B are separated by
one or more spaces. The end of the test cases is specified with a line
having three zeros (for N , C , and R .)
The test case in the example below is the same as the one in the figure.
k . V
Where k is test case number (starting at 1,) is a space, and V is the result.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#define INF 1000000000
#define MAX 110
using namespace std; map<string,int> M; int dis[MAX][MAX],amount[MAX],n; void Flyod()
{
int i,j,u;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(dis[i][j]<=) dis[i][j]=INF;
if(i==j) dis[i][j]=;
}
}
for(u=;u<=n;u++)
{
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
int len=dis[i][u]+dis[u][j];
if(dis[i][j]>len) dis[i][j]=len;
}
}
}
/*
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(dis[i][j]<INF) printf("%d ",dis[i][j]);
else printf("INF ");
}
printf("\n");
}
*/
} int main()
{
int i,v,c,r,t,a,b,sum;
char ch[];
string s1,s2;
t=;
//freopen("data.txt","r",stdin);
while(scanf("%d %d %d",&n,&c,&r),(n+c+r))
{
//printf("%d %d %d\n",n,c,r);
t++;
c++;
M.clear();
memset(amount,,sizeof(amount));
n=;
for(i=;i<=c;i++)
{
cin>>s1;
if(M.count(s1)<=)
{
M[s1]=n++;
}
amount[M[s1]]++;
}
c=n-;
memset(dis,,sizeof(dis));
while(r--)
{
cin>>s1;
if(M.count(s1)<=) M[s1]=n++;
a=M[s1];
scanf("%s",ch);
cin>>s2;
if(M.count(s2)<=) M[s2]=n++;
b=M[s2];
sscanf(ch+,"%d",&v);
int len=strlen(ch);
if(ch[len-]=='>')
{
if(dis[a][b]== || dis[a][b]>v) dis[a][b]=v;
}
if(ch[]=='<')
{
if(dis[b][a]== || dis[b][a]>v) dis[b][a]=v;
}
}
n--;
Flyod();
sum=;
for(i=;i<=c;i++)
{
sum+=(dis[][i]+dis[i][])*amount[i];
}
printf("%d. %d\n",t,sum);
}
return ;
}
2923
HDU - 2923 - Einbahnstrasse的更多相关文章
- HDU 2923 Relocation(状压dp+01背包)
题目代号:HDU2923 题目链接:http://poj.org/problem?id=2923 Relocation Time Limit: 1000MS Memory Limit: 65536K ...
- hdu 2923 map+Floyd 拉破车
有向图 具体方向看箭头 从起点到指定城市拉破车,一个城市可能有多个破车,一次只能拉一辆破车 也就是到了指定地点后要回到起点 假如有100辆破车 但是只有一个城市有 就得在起点与这个城市间往返100次所 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDU图论题单
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- 【转】最短路&差分约束题集
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
- 转载 - 最短路&差分约束题集
出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★ ...
- 最短路&查分约束
[HDU] 1548 A strange lift 根蒂根基最短路(或bfs)★ 2544 最短路 根蒂根基最短路★ 3790 最短路径题目 根蒂根基最短路★ 2066 一小我的观光 根蒂根基最短路( ...
- hdu 1596 find the safest road (最短路径)
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
随机推荐
- JS基础之开篇
JavaScript是解释型语言,无需编译就可以随时运行,这样哪怕语法有错误,没有语法错误的部分还是能正确运行. 1.JavaScript能做什么? 01, javaScript可以进行表单验证 如果 ...
- git出错调试
https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems git_trace ...
- 原生JS---6
原生js学习笔记6——事件 事件对象 鼠标事件 event.clientX在可视区中,鼠标点击的x坐标 event.clientY在可视区中,鼠标点击的y坐标 示例: <!DOCTYPE htm ...
- JavaScript学习杂记
1.DOM层级:document(document) --> doctype,documentElement(html) --> head,body(body). 2.offset, cl ...
- idea UML快捷键
- Ubuntu16.04开启root用户,并远程登录
Ubuntu安装完成默认是普通权限的用户,root用户需要手动开启,并且还不含opne-ssh模块 1.给root用户设置密码 # sudo passwd root 会提示输入unix的新密码,这就 ...
- ACM_魔仙岛探险(深搜)
魔仙岛探险 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小敏通过秘密方法得到一张不完整的魔仙岛航拍地图.魔仙岛由一个主岛和一些 ...
- A - Diverse Team
Problem description There are n students in a school class, the rating of the i-th student on Codeho ...
- 禁止tomcat扫描jar包的tld文件
禁止tomcat扫描jar包的tld文件tomcat/conf/logging.properties 取消注释org.apache.jasper.compiler.TldLocationsCache. ...
- Git教程(3)git工作区与文件状态及简单示例
基础 目录: working driectory 工作目录,就是我们的工作目录,其中包括未跟踪文件及暂存区和仓库目录. staging area 暂存区,不对应一个具体目录,其实只是git di ...