题目描述

公元22××年,宇宙中最普遍的交通工具是spaceship。spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship船长也成了最热门的职业之一。当然,要成为一名出色的船长,必须通过严格的考核,例如下面是最简单的问题中的一个。

用1~n的整数给n个星系标号,目前你在标号为1的星系,你需要送快递到标号为n的星系,星系之间由于存在陨石带,并不是都可以直连的。同时,由于超时空隧道的存在,在某些星系间飞行会出现时间静止甚至倒流,飞行时间为0或为负数。另外,由星系i到星系j的时间和由星系j到星系i的时间不一定是相同的。

在寄出日期之前收到快递被认为是不允许的,所以每部spaceship上都有一个速度调节装置,可以调节飞行的时间。简单来说其功能就是让所有两个星系间的飞行时间(如果可以直达)都增加或减少相同的整数值,你的任务就是调整速度调节器,找出一条用最短时间完成任务的路径,并且保证这个最短时间的值大于或等于0。

输入格式

输入文件包含多组数据,第1个数为T,表示数据的数量。

对于每一组数据,输入第1行为两个正整数N(2≤N≤100),E(1≤E≤N*(N-1)/2),为星系的个数和星系间飞行的路线数。然后E行,每行三个整数i,j和t(1≤i,j≤N,i≠j,-100000≤t≤100000),表示由星系i到星系j飞行的时间为t。由i到j最多只会有一条飞行线路。

输出格式

输出文件共T行,每组数据输出一行;

如果可以通过调节速度调节器完成任务,则输出一个非负整数,表示由星系1到星系N的最短时间。

如果不能由星系1到达星系N,则输出-1。

本来想错了以为是二分+判负圈 看了数据之后才发现有的负圈不能到达终点 所以判负圈的时候要判断更新的节点是否可以到达终点 这个可以弗洛伊德预处理一下 嗯

期中考试又一次爆炸 呵呵 笑什么笑

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<queue>
  5. #include<vector>
  6. using namespace std;
  7. ;
  8. <<;
  9. struct Edge{
  10. int from,to,dist;
  11. };
  12. vector<Edge> edges;
  13. vector<int> G[maxn];
  14. int n,e,v[maxn],d[maxn],inq[maxn],cnt[maxn],conn[maxn][maxn];
  15. void initBF(){
  16. ;i<=n;i++) G[i].clear();
  17. memset(v,,sizeof(v));
  18. edges.clear();
  19. memset(conn,,sizeof(conn));
  20. ;i<=n;i++) conn[i][i]=;
  21. }
  22. void go(int u){
  23. v[u]=;
  24. ;i<G[u].size();i++){
  25. Edge& e=edges[G[u][i]];
  26. if(v[e.to]) continue;
  27. go(e.to);
  28. }
  29. }
  30. void addEdge(int from,int to,int dist){
  31. edges.push_back((Edge){from,to,dist});
  32. G[);
  33. conn[;
  34. }
  35. bool BF(int s){
  36. memset(inq,,sizeof(inq));
  37. memset(cnt,,sizeof(cnt));
  38. ;i<=n;i++) d[i]=inf;
  39. d[s]=;
  40. inq[s]=;
  41. queue<int> Q;
  42. Q.push(s);
  43. while(!Q.empty()){
  44. int u=Q.front();Q.pop();
  45. inq[u]=;
  46. ;i<G[u].size();i++){
  47. Edge& e=edges[G[u][i]];
  48. int go=e.to;
  49. if(conn[go][n]&&d[go]>d[u]+e.dist){
  50. d[go]=d[u]+e.dist;
  51. if(!inq[go]){
  52. inq[go]=;
  53. Q.push(go);
  54. if(++cnt[go]>n) return false;
  55. }
  56. }
  57. }
  58. }
  59. ) return false;
  60. return true;
  61. }
  62. bool J(int k){
  63. ;i<e;i++) edges[i].dist+=k;
  64. );
  65. ;i<e;i++) edges[i].dist-=k;
  66. return res;
  67. }
  68. void FLYD(){
  69. ;k<=n;k++){
  70. ;i<=n;i++){
  71. ;j<=n;j++){
  72. ;
  73. }
  74. }
  75. }
  76. }
  77. int main()
  78. {
  79. freopen("tstrip.in","r",stdin);
  80. freopen("tstrip.std","w",stdout);
  81. int T;
  82. scanf("%d",&T);
  83. while(T--){
  84. scanf("%d%d",&n,&e);
  85. initBF();
  86. ;i<=e;i++){
  87. int x,y,z;
  88. scanf("%d%d%d",&x,&y,&z);
  89. addEdge(x,y,z);
  90. }
  91. go();
  92. if(!v[n]) printf("-1\n");
  93. else{
  94. FLYD();
  95. ,r=;
  96. while(l<r){
  97. ;
  98. if(J(m)){
  99. r=m;
  100. };
  101. }
  102. J(l);
  103. printf("%d\n",d[n]);
  104. }
  105. }
  106. fclose(stdin);
  107. fclose(stdout);
  108. ;
  109. }

NOIP模拟赛-时间与空间之旅的更多相关文章

  1. 2014-10-31 NOIP模拟赛

        10.30 NOIp  模拟赛   时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...

  2. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  3. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  4. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  7. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  8. 【noip模拟赛5】细菌 状压dp

    [noip模拟赛5]细菌   描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携 ...

  9. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

随机推荐

  1. Soufun_News

    using AnfleCrawler.Common; using System; using System.Collections.Generic; using System.ComponentMod ...

  2. 拿到新机器,进行初始化和部署Nginx的过程

    1. 在/etc/ansbile/hosts中添加主机init 2. 在sysinit.yml中修改要初始化的机器:   hosts: init 3. 设置不检查key      export ANS ...

  3. OC之160728

    NSData与NSMutableData:代表数据缓冲区有两个作用,将数据读入NSData和输出NSData数据 输出 将字符串写入指定文件 用NSFileManager:为创建,删除,移动,复制文件 ...

  4. codeforces 666A (DP)

    题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...

  5. H5版定点投篮游戏(1)--物理模型抽象

    前言: 前几天目睹了大学同学开了个微店, 算是间接体验微信公众平台的使用. 觉得非常便捷和方便, 于是自己也想捣鼓一个. 公众号取名: "木目的H5游戏世界", 定位做成一个, 个 ...

  6. 腾讯优测-优社区干货精选 |  那些年,我们在Android机型适配上遇到的坑之Camera拍照时快门咔嚓声

    文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...

  7. hiho一下121周 后缀数组二·重复旋律2

    后缀数组二·重复旋律2 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...

  8. HEX格式数据转换成十六进制字符串

    /** * Hex格式数据转换成十六进制字符串 * @param src */ public void bytesToHexString(byte[] by){ StringBuilder strin ...

  9. 自定义滚动条样式(jQuery插件、Webkit、IE)

    -------------jQuery滚动条插件------------- http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html http: ...

  10. TestDisk 恢复rm -rf 的文件

    Linux操作系统下使用TestDisk恢复已删除的文件或目录 原创作者:szyzln/2015.10.16   转载需注明原始出处! 说明: testdisk和photorec是著名的恢复数据,而绝 ...