题目描述 Description

yh非常想念他的女朋友小y,于是他决定前往小y所在的那块大陆。

小y所在的大陆共有n个城市,m条双向路,每条路连接一个或两个城市。经过一条路ei需要耗费时间ti。此外,每条路均有一个特定标识,为’L’,’O’,’V’,’E’,中的某个字母。yh从1号城市出发,前往位于n号城市的小y所在处。

为了考验yh,小y规定,yh必须按照‘L’->’O’->’V’->’E’->’L’->’O’->’V’->’E’->.... 的顺序选择路,且所走的第一条路是’L’,最后一条路是’E’,每走完一个完整的’LOVE’算是通过一次考验

在不违背小y要求的前提下,yh想花费最少的时间到达小y的所在地,同在此时间内完成最多次考验。你能帮yh算出,他最少要花多久到达城市n,完成多少次考验呢?

输入描述 Input Description

第一行为两个整数n,m表示有n个城市,m条双向路。

第2行到第m+1行,每行有3个整数x,y,t和一个字符char,城市x,y之间有路,通过这条路花费的时间为t,这条路的特殊标志为 char。

输出描述 Output Description

输出1行,两个整数表示yh到达城市n花费的最少时间和该时间内通过的最多次考验数,如果不能到达则输出’HOLY SHIT!’

样例输入 Sample Input

【样例输入1】

4 4

1 2 1 L

2 1 1 O

1 3 1 V

3 4 1 E

【样例输入2】

4 4

1 2 1 L

2 3 1 O

3 4 1 V

4 1 1 E

样例输出 Sample Output

【样例输出1】

4 1

【样例输出2】

HOLY SHIT!

数据范围及提示 Data Size & Hint

对于100%数据,1≤n≤1314,0≤M≤13520

  1. /*
  2. 求最短路径,不过多加一维表示走到该点时的字母
  3. */
  4. #include<cstdio>
  5. #include<iostream>
  6. #include<cstring>
  7. #include<queue>
  8. #define N 1500
  9. using namespace std;
  10. int head[N],f[N][],c[N][],vis[N][],n,m;
  11. struct node
  12. {
  13. int v,pre,t,flag;
  14. };node e[N*];
  15. struct Node
  16. {
  17. int num,fl;
  18. };
  19. void add(int i,int x,int y,int z,int fl)
  20. {
  21. e[i].v=y;
  22. e[i].t=z;
  23. e[i].flag=fl;
  24. e[i].pre=head[x];
  25. head[x]=i;
  26. }
  27. void spfa()
  28. {
  29. memset(f,0x3f3f3f3f,sizeof(f));
  30. queue<Node> q;
  31. Node a;a.num=;a.fl=;
  32. q.push(a);vis[][]=;f[][]=;
  33. while(!q.empty())
  34. {
  35. Node x=q.front();vis[x.num][x.fl]=;q.pop();
  36. for(int i=head[x.num];i;i=e[i].pre)
  37. if((e[i].flag==(x.fl%+))&&f[e[i].v][e[i].flag]>=f[x.num][x.fl]+e[i].t)//因为要求考验次数最多,所以是“>=”,被坑了好长时间
  38. {
  39. f[e[i].v][e[i].flag]=f[x.num][x.fl]+e[i].t;
  40. c[e[i].v][e[i].flag]=c[x.num][x.fl]+;
  41. if(!vis[e[i].v][e[i].flag])
  42. {
  43. vis[e[i].v][e[i].flag]=;
  44. Node y;y.num=e[i].v;y.fl=e[i].flag;
  45. q.push(y);
  46. }
  47. }
  48. }
  49. if(f[n][]!=0x3f3f3f3f)printf("%d %d",f[n][],c[n][]/);
  50. else printf("HOLY SHIT!");
  51. }
  52. int main()
  53. {
  54. scanf("%d%d",&n,&m);
  55. for(int i=;i<=m;i++)
  56. {
  57. int x,y,z,fl;char c;
  58. scanf("%d%d%d",&x,&y,&z);cin>>c;
  59. if(c=='L')fl=;if(c=='O')fl=;if(c=='V')fl=;if(c=='E')fl=;
  60. add(i*-,x,y,z,fl);add(i*,y,x,z,fl);
  61. }
  62. spfa();
  63. return ;
  64. }

爱情之路(codevs 2070)的更多相关文章

  1. AC日记——爱情之路 codevs 2070

    2070 爱情之路  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description yh非常想念他的女朋友小y,于是他 ...

  2. [codevs2070]爱情之路

    [codevs2070]爱情之路 试题描述 yh非常想念他的女朋友小y,于是他决定前往小y所在的那块大陆. 小y所在的大陆共有n个城市,m条双向路,每条路连接一个或两个城市.经过一条路ei需要耗费时间 ...

  3. it喜爱的歌词

    1.曼丽 我们的过去我们的情义怎么能忘记  #曼丽你怎么这样忍心静静的就离去 #我很伤心从今以后不能够见到你 #只有留下你往日的情景使我常回忆 #一样的青山一样的绿水只有我和你 #曼丽可记得我们时常快 ...

  4. CODEVS 1817 灾后重建 Label:Floyd || 最短瓶颈路

    描述 灾后重建(rebuild)  B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两 ...

  5. [ CodeVS冲杯之路 ] P1368

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1368/ 嗯……泡泡堂,很劲啊,其实就是个盗版的田忌赛马 http://www.cnblogs.com/hyfer/p/ ...

  6. [ CodeVS冲杯之路 ] P1092

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1092/ 嗯,这道题有一定难度啊,需要先用扩展欧几里得算法求出逆元,然后按照大小构一颗带边权为小时数的树 树链剖分后在树 ...

  7. [ CodeVS冲杯之路 ] P3955

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/3955/ 最长上升子序列的加强版,n 有1000000,n 方的 DP 肯定会 TLE,那么用二分栈维护 二分栈我讲不好 ...

  8. [ CodeVS冲杯之路 ] P1165

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1165/ 题目很简单,代码最好写朴实一点,不要想着哪些情况可以合并在一起啊等等 老老实实一个个判断,不然很容易出错 细节 ...

  9. [ CodeVS冲杯之路 ] P1053

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1053/ 直接扫一遍串,把字母对应的 ascii 码直接做数组下标,交给数组统计 最后查询一遍数组的 'a'-'z' , ...

随机推荐

  1. 洛谷P1121 环状最大两段子段和

    题目描述 给出一段环状序列,即认为A[1]和A[N]是相邻的,选出其中连续不重叠且非空的两段使得这两段和最大. 输入输出格式 输入格式: 输入文件maxsum2.in的第一行是一个正整数N,表示了序列 ...

  2. Recon-Erlang线上系统诊断工具

    Erlang系统素以稳定可靠闻名,但是它也是c实现的,也是要管理比如内存,锁等等复杂的事情,也会出现Crash,而且crash的时候大部分原因是因为内存问题.为此erlang运行期提供了强大的自省机制 ...

  3. maven 热部署成功案列

    首先配置tomcat-user.xml,这个文件是在tomcat的conf文件夹下面 在</tomcat-users>前添加这段 <role rolename="admin ...

  4. Java Web文件上传

    参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...

  5. hdu 1257 最少拦截系统(贪心)

    解题思路:[要充分理解题意,不可断章取义] 贪心:每个防御系统要发挥其最大性能, 举例: Input : 9 389 207 155 300 299 170 155 158 65 Output: 2 ...

  6. Log4j使用教程 log4:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).

    1.Logger类 通过Logger类的静态方法Logger.getRootLogger得到RootLogger.所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的 ...

  7. MSN

    msn (微软软件) 编辑 MSN,全称Microsoft Service Network,是微软公司(Microsoft)旗下的门户网站. MSN(门户网站)提供包括必应搜索.文娱.健康.理财.汽车 ...

  8. 2015安徽省赛 C.LU的困惑

    题目描述 Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率.现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中( ...

  9. [ruby on rails] 跟我学之(1)环境搭建

    环境: ubuntu 12.04 (64bit) 代理: 自己最好弄一个代理. 环境配置指令如下: sudo apt-get update sudo apt-get install curl \cur ...

  10. 速度之王 — LZ4压缩算法(三)

    LZ4使用 make / make clean 得到可执行程序:lz4.lz4c Usage: ./lz4 [arg] [input] [output] input : a filename Argu ...