Description

John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞。其中1<=N<=500,1<=M<=2500,1<=W<=200。 现在John想借助这些虫洞来回到过去(出发时刻之前),请你告诉他能办到吗。 John将向你提供F(1<=F<=5)个农场的地图。没有小路会耗费你超过10000秒的时间,当然也没有虫洞回帮你回到超过10000秒以前。

Input

* 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秒前的虫洞。

Output

* Lines 1..F: 如果John能在这个农场实现他的目标,输出"YES",否则输出"NO"。

题解:裸的不能再裸的 SPFA 判负环. 用 DFS 据说能更快一点

#include<bits/stdc++.h>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 10000
#define inf 10000000
using namespace std;
int hd[maxn],to[maxn<<1],nex[maxn<<1],val[maxn<<1];
int d[maxn],vis[maxn];
int edges,flag;
void add(int u,int v,int c)
{
nex[++edges]=hd[u], hd[u]=edges, to[edges]=v, val[edges]=c;
}
void spfa(int u)
{
int v;
vis[u]=1;
for(int i=hd[u];i;i=nex[i])
{
v=to[i];
if(d[u]+val[i]<d[v])
{
if(vis[v] || flag)
{
flag=1;
break;
}
d[v]=d[u]+val[i];
spfa(v);
}
}
vis[u]=0;
}
void re()
{
memset(hd,0,sizeof(hd));
memset(vis,0,sizeof(vis));
for(int i=1;i<maxn;++i) d[i]=inf;
edges=flag=0;
}
int main()
{
// setIO("input");
int F;
scanf("%d",&F);
while(F--)
{
re();
int n,m,w, a,b,c;
scanf("%d%d%d",&n,&m,&w);
for(int i=1;i<=m;++i)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b, c),add(b,a,c);
}
for(int i=1;i<=w;++i)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,-c);
}
for(int i=1;i<=n;++i)
{
d[i]=0;
spfa(i);
if(flag) break;
}
if(flag==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

  

最新文章

  1. 【玩转单片机系列001】 08接口双色LED显示屏驱动方式探索
  2. angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。
  3. [PHP] - Apache + PHP 环境搭建
  4. 利用Objective-C运行时hook函数的三种方法
  5. Rem实现自适应初体验
  6. Spring3.0 入门进阶(三):基于XML方式的AOP使用
  7. 升级Capitan 10.11以后CocoaPod 无效解决办法
  8. iPhone开发技巧之日志保存教程
  9. hadoop深入研究:(五)——Archives
  10. cocos2d-x 通过socket实现http下载及断点续传的实现
  11. 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
  12. 移动端300ms点击延迟
  13. 我的第一个网页制作:Hello World!
  14. GoLang structTag说明
  15. shiro缓存管理
  16. Puppeteer 应用容器化
  17. mysql安装后不是内部或外部命令解决
  18. Vue自动化工具(Vue-CLI)的安装
  19. XBOX360
  20. jquery zTree异步加载的例子

热门文章

  1. [bzoj1131][POI2008]Sta_树形dp
  2. Spring MVC 入门(二)
  3. 关东升的《从零開始学Swift》即将出版
  4. hdu 5094 Maze bfs
  5. luogu1197 [JSOI2008]星球大战
  6. 2017 Multi-University Training Contest - Team 1 1002&amp;&amp;hdu 6034
  7. codeforces 915D Almost Acyclic Graph 拓扑排序
  8. LuoguP3621 [APIO2007]风铃
  9. 第14章 Wi-Fi系统应用 14.1 了解Wi-Fi系统的结构
  10. PCB MS SERVER 数据导出与导入操作步骤----使用第3方工具