NOIP模拟赛 虫洞
【题目描述】
John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞(有向边)。其中1<=N<=500,1<=M<=2500,1<=W<=200。 现在John想借助这些虫洞来回到过去(出发时刻之前),请你告诉他能办到吗。 John将向你提供F(1<=F<=5)个农场的地图。没有小路会耗费你超过10000秒的时间,当然也没有虫洞回帮你回到超过10000秒以前。
【输入格式】
* Line 1: 一个整数 F, 表示农场个数。
* Line 1 of each farm: 三个整数 N, M, W。
* Lines 2..M+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条用时T秒的小路。
* Lines M+2..M+W+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条可以使John到达T秒前的虫洞。
【输出格式】
* Lines 1..F: 如果John能在这个农场实现他的目标,输出"YES",否则输出"NO"。
【样例输入】
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8
【样例输出】
NO
YES
floyd判负环:好像会超时2个点
#include<iostream>
#include<cstring>
using namespace std; const int INF=;
const int MAXN=; int f,n,m,w;
int Dist[MAXN][MAXN],Graph[MAXN][MAXN];
int minn; void floyd()
{
memcpy(Graph,Dist,sizeof(Dist));
for(int k=;k<=n;k++)
{
for(int i=;i<k;i++)
for(int j=i+1;j<k;j++)
minn=min(minn,Dist[i][j]+Graph[j][k]+Graph[k][i]);
if(minn<) return;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
int temp=Dist[i][k]+Dist[k][j];
if(temp<Dist[i][j])
Dist[i][j]=temp;
}
}
} inline void Init()
{
minn=INF;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(i==j) Dist[i][j]=;
else Dist[i][j]=INF;
}
} int main()
{
scanf("%d",&f);
for(int Loop=;Loop<=f;Loop++)
{
scanf("%d %d %d",&n,&m,&w);
Init();
for(int i=;i<=m;i++)
{
int s,e,t;
scanf("%d %d %d",&s,&e,&t);
Dist[s][e]=Dist[e][s]=min(Dist[s][e],t);
}
for(int i=;i<=w;i++)
{
int s,e,t;
scanf("%d %d %d",&s,&e,&t);
Dist[s][e]=min(Dist[s][e],-t);
}
floyd();
if(minn<) printf("YES\n");
else printf("NO\n");
}
return ;
}
spfa判负环:
#include<iostream>
#include<cstring>
using namespace std; const int INF=;
const int MAXN=; struct Edge
{
int to,w,next;
}E[];
int node=,head[]; int f,n,m,w; int Dist[];
bool vis[];
bool flag; void insert(int u,int v,int w)
{
node++;
E[node]=(Edge){v,w,head[u]};
head[u]=node;
} void spfa_dfs(int s)
{
vis[s]=;
for(int i=head[s];i!=;i=E[i].next)
{
int to=E[i].to,w=E[i].w;
if(Dist[s]+w<Dist[to])
{
if(vis[to]){flag=;return;}
else
{
Dist[to]=Dist[s]+w;
spfa_dfs(to);
}
}
}
vis[s]=;
} bool check()
{
flag=;
memset(Dist,0x7f,sizeof(Dist));
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
{
Dist[i]=;
spfa_dfs(i);
if(flag) return ;
}
return ;
} int main()
{
scanf("%d",&f);
for(int Loop=;Loop<=f;Loop++)
{
scanf("%d %d %d",&n,&m,&w);
node=;
memset(head,,sizeof(head));
for(int i=;i<=m;i++)
{
int s,e,t;
scanf("%d %d %d",&s,&e,&t);
insert(s,e,t);insert(e,s,t);
}
for(int i=;i<=w;i++)
{
int s,e,t;
scanf("%d %d %d",&s,&e,&t);
insert(s,e,-t);
}
if(check()) printf("YES\n");
else printf("NO\n");
}
return ;
}
NOIP模拟赛 虫洞的更多相关文章
- 【最短路】NOIP模拟赛 虫洞
虫洞 [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差为delta. 1. 从白洞跃迁到 ...
- [noip模拟赛]虫洞holes<SPFA>
虫洞(holes.cpp/c/pas) [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差 ...
- NOIP模拟赛 6.29
2017-6-29 NOIP模拟赛 Problem 1 机器人(robot.cpp/c/pas) [题目描述] 早苗入手了最新的Gundam模型.最新款自然有着与以往不同的功能,那就是它能够自动行走, ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
随机推荐
- linux 查看系统版本号(转)
一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# cat /proc/versionLinux version 2.6.18 ...
- JS高级学习历程-14
昨天内容回顾 1. 面向对象的私有成员.静态成员 私有成员:在构造函数里边定义局部变量,就是私有成员. 静态成员:在js里边,函数就是对象,可以通过给函数对象声明成员方式声明静态成员. 2. 原型继承 ...
- sonar扫描android项目配置 mac版
一. 下载安装 JDK8以上 SonarQube SonarQube Scanner 1. 解压缩SonarQube和SonarQube Scanner,直接运行SonarQube中bin目录下 ...
- HDU-1269-迷宫城堡(强连通 模板)
链接:https://vjudge.net/problem/HDU-1269 题意: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M< ...
- Netty(5)@Sharable
问题:我写了MyDecoder which extends ByteToMessageDecoder,单线程没问题,但是多线程时,报'the handler should be sharable'.查 ...
- 部署到CentOS Net Core
Net Core部署到CentOS 本文基于初次或再次尝试部署.Net Core应用到Linux服务器上,我尝试后自我总结的经验一个简单的Demo,尝试部署在Linux服务器上和跨服务器访问数据库. ...
- hashMap的具体实现
HashMap是Java中的一个重要的数据结构! 与HashMap更重要的一个数据结构是HashTable,其中最重要的区别是HashTable传说中是线程安全的(之所以说他是传说是因为我并没有去理解 ...
- 表单验证插件jquery.validate.js
最常使用JavaScript的场合就是表单的验证,而jQuery作为一个优秀的JavaScript库,也提供了一个优秀的表单验证插件----Validation.Validation是历史最悠久的jQ ...
- Typora--Draw Diagrams With Markdown
Typora Typora supports some Markdown extension for diagrams, you could enable this feature from pref ...
- PHP超全局变量、魔术变量和魔术方法
PHP超全局变量 $_GET 通过get方式传递的值(通过 URL 参数传递给当前脚本的变量的数组.) $_POST 通过post形式传递的值(当 HTTP POST 请求的 Content-Type ...