NOIP模拟赛-时间与空间之旅
题目描述
公元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。
本来想错了以为是二分+判负圈 看了数据之后才发现有的负圈不能到达终点 所以判负圈的时候要判断更新的节点是否可以到达终点 这个可以弗洛伊德预处理一下 嗯
期中考试又一次爆炸 呵呵 笑什么笑
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<vector> using namespace std; ; <<; struct Edge{ int from,to,dist; }; vector<Edge> edges; vector<int> G[maxn]; int n,e,v[maxn],d[maxn],inq[maxn],cnt[maxn],conn[maxn][maxn]; void initBF(){ ;i<=n;i++) G[i].clear(); memset(v,,sizeof(v)); edges.clear(); memset(conn,,sizeof(conn)); ;i<=n;i++) conn[i][i]=; } void go(int u){ v[u]=; ;i<G[u].size();i++){ Edge& e=edges[G[u][i]]; if(v[e.to]) continue; go(e.to); } } void addEdge(int from,int to,int dist){ edges.push_back((Edge){from,to,dist}); G[); conn[; } bool BF(int s){ memset(inq,,sizeof(inq)); memset(cnt,,sizeof(cnt)); ;i<=n;i++) d[i]=inf; d[s]=; inq[s]=; queue<int> Q; Q.push(s); while(!Q.empty()){ int u=Q.front();Q.pop(); inq[u]=; ;i<G[u].size();i++){ Edge& e=edges[G[u][i]]; int go=e.to; if(conn[go][n]&&d[go]>d[u]+e.dist){ d[go]=d[u]+e.dist; if(!inq[go]){ inq[go]=; Q.push(go); if(++cnt[go]>n) return false; } } } } ) return false; return true; } bool J(int k){ ;i<e;i++) edges[i].dist+=k; ); ;i<e;i++) edges[i].dist-=k; return res; } void FLYD(){ ;k<=n;k++){ ;i<=n;i++){ ;j<=n;j++){ ; } } } } int main() { freopen("tstrip.in","r",stdin); freopen("tstrip.std","w",stdout); int T; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&e); initBF(); ;i<=e;i++){ int x,y,z; scanf("%d%d%d",&x,&y,&z); addEdge(x,y,z); } go(); if(!v[n]) printf("-1\n"); else{ FLYD(); ,r=; while(l<r){ ; if(J(m)){ r=m; }; } J(l); printf("%d\n",d[n]); } } fclose(stdin); fclose(stdout); ; }
NOIP模拟赛-时间与空间之旅的更多相关文章
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- 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题, ...
- 【noip模拟赛5】细菌 状压dp
[noip模拟赛5]细菌 描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携 ...
- NOIP模拟赛-2018.11.6
NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...
随机推荐
- 64位Win7系统下vs2010调试无法连接oracle
64位win7系统的Program Files (x86)路径中有括号,oracle不认识这样的路径,所以就出现不能连接数据库的问题.所以我们可以将vs2010的内部调试web服务器WebDev.We ...
- OutputCache 如何使用本地缓存 【转】
注意!ASP.NET MVC 3 的一个 OutputCache 问题 在用 ASP.NET MVC 3 重写博客园网站首页时,特地留意了一下这个缓存问题,通过这篇博文分享一下. 在 ASP.NE ...
- 黑马程序员——【Java基础】——集合框架
---------- android培训.java培训.期待与您交流! ---------- 一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是 ...
- swiper的使用
最近要用html5制作可以一屏一屏向上滑动的页面,发现大家使用swiper插件的较多,所以试了试,发现做出来的效果还不错,喜欢的朋友可以参考一下自己动手做啦. 1.首先我们要引入4个文件: <h ...
- DedeCMS的分页标签pagelist支持中英文的修改方法[转]
不得不感叹DedeCMS的强大,可定制性和扩展性太强了,就算不懂php也可以很轻松的修改源码. 今天碰到个新问题,用DedeCMS搞了个中英双语的网站,其他的都修改好了,上线之前发现分页条中英文版中都 ...
- watir学习系列--Watir API介绍
文本框: <INPUT id="email" name="_fmu.u._0.e" value="" /> ...
- Python12期培训班-day1-三级菜单代码分享
#!/usr/bin/env python3 import sys import os zonecode = { '广东省': {'广州市':['越秀区','海珠区','荔湾区','天河区'], '深 ...
- webdriver如何定位多层iframe中元素
在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌 ...
- crontab 移动日志-超越昨天的自己系列(12)
linux上定时执行某些脚本是管理服务器的时候比较常用的场景,比如定时检查进程是否存在,定时启动或关闭进程,定时检查日志删除日志等. 当我打开google百度crontab时长篇大论的一大堆,详细解释 ...
- RobotFramwork + Appium+ Andriod 环境搭建
RF+Appium+Android环境搭建教程 - 1.RF安装 一.适用操作系统 Win7 旗舰版Sp1 32位操作系统 RF环境搭建,请参考文档<RobotFramwork安装指南> ...