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 ...
随机推荐
- Soufun_News
using AnfleCrawler.Common; using System; using System.Collections.Generic; using System.ComponentMod ...
- 拿到新机器,进行初始化和部署Nginx的过程
1. 在/etc/ansbile/hosts中添加主机init 2. 在sysinit.yml中修改要初始化的机器: hosts: init 3. 设置不检查key export ANS ...
- OC之160728
NSData与NSMutableData:代表数据缓冲区有两个作用,将数据读入NSData和输出NSData数据 输出 将字符串写入指定文件 用NSFileManager:为创建,删除,移动,复制文件 ...
- codeforces 666A (DP)
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...
- H5版定点投篮游戏(1)--物理模型抽象
前言: 前几天目睹了大学同学开了个微店, 算是间接体验微信公众平台的使用. 觉得非常便捷和方便, 于是自己也想捣鼓一个. 公众号取名: "木目的H5游戏世界", 定位做成一个, 个 ...
- 腾讯优测-优社区干货精选 | 那些年,我们在Android机型适配上遇到的坑之Camera拍照时快门咔嚓声
文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...
- hiho一下121周 后缀数组二·重复旋律2
后缀数组二·重复旋律2 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...
- HEX格式数据转换成十六进制字符串
/** * Hex格式数据转换成十六进制字符串 * @param src */ public void bytesToHexString(byte[] by){ StringBuilder strin ...
- 自定义滚动条样式(jQuery插件、Webkit、IE)
-------------jQuery滚动条插件------------- http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html http: ...
- TestDisk 恢复rm -rf 的文件
Linux操作系统下使用TestDisk恢复已删除的文件或目录 原创作者:szyzln/2015.10.16 转载需注明原始出处! 说明: testdisk和photorec是著名的恢复数据,而绝 ...