题目传送门

题目大意:有F组数据,N表示有N点,M表示有M条边,走一遍边需要花费Ti个时间,还有W个虫洞,可以向前回溯Ti时间,求能否从1点出发,经过一些路或虫洞回到1点后时间为负。

建图后用SPFA判负环即可。

code:

#include <cstdio>
#include <cstring>
using namespace std; int read()
{
char c;while(c=getchar(),c<''||c>'');
int x=c-'';while(c=getchar(),c>=''&&c<='')x=x*+c-'';
return x;
} int T;
int N,M,W;
int x,y,c; struct list{
int head[],nxt[],To[],W[],cnt;
void fc(){memset(head,-,sizeof head);memset(nxt,-,sizeof nxt);cnt=;} void add(int x,int y,int c)
{
W[cnt]=c;To[cnt]=y;
nxt[cnt]=head[x];
head[x]=cnt;
cnt++;
}
}MP; bool flag;
int dist[],vis[];
void SPFA(int now)
{
if(flag)return ;
vis[now]=;
for(int i=MP.head[now];i!=-;i=MP.nxt[i]){
if(dist[now]+MP.W[i]<dist[MP.To[i]]){
if(vis[MP.To[i]]){flag=true;return ;}
dist[MP.To[i]]=dist[now]+MP.W[i];
vis[MP.To[i]]=;SPFA(MP.To[i]);
}
}
vis[now]=;
return ;
} int main()
{
T=read();
register int i,j;
while(T--){
N=read(),M=read(),W=read();
MP.fc();
for(i=;i<=M;i++){
x=read(),y=read(),c=read();
MP.add(x,y,c);
MP.add(y,x,c);
}
for(i=;i<=W;i++){
x=read(),y=read(),c=read();
MP.add(x,y,-c);
}
memset(vis,,sizeof vis);memset(dist,,sizeof dist);dist[]=;
flag=;SPFA();
if(flag)puts("YES");
else puts("NO");
}
}

POJ3259_Wormholes_KEY的更多相关文章

随机推荐

  1. SAP技术专家的ABAP调试器培训材料

    首先弄清楚ABAP Classic调试器和新调试器的区别: Classic debugger: (1) Static breakpoint a. BREAK-POINT : non-user spec ...

  2. IntelliJ IDEA 运行你的第一个Java应用程序

    IntelliJ IDEA 运行你的第一个Java应用程序创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导.你应该注意的主要是项目的SDK.SD ...

  3. 20165322 第七周 mybash 的实现

    mybash的实现 要求 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客 相关函数的作用 fork fork()函数通过系统调 ...

  4. 关于 Vue.js+Element-UI 日期控件 日期范围选择

    理想效果 : 也就是说前面时间框的时间能选的范围应该小于等于后面的时间框; 后面时间框能选的范围应该大于等于前面的时间框; 示例代码 : 页面: <el-form-item label=&quo ...

  5. java 中重载(Overload)和重写(Override)的区别

    首先重载和重写是应用于两个不同场景下面的两种不同的手段: 两者各自的特征: 重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不 ...

  6. 关于JS的clone()函数编写的一些问题

    问题讲述:用js 实现一个clone()克隆函数,该函数会把输入进去的不同类型值Number,String,Undefined,Boolean,Function,Null,Object,Array,R ...

  7. 【微信开发】LINUX-windows下用navicat远程链接虚拟机Linux下MySQL数据库

    今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题.   MySQL登陆:mysql -h主机地址 -u用户名-p用户 ...

  8. 算法是什么(二)手写个链表(java)

    算法是什么(二)手写个链表(java)   liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...

  9. oracle 之分析函数 over (partition by ...order by ...)

    一:分析函数overOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行. 1.分析函数和聚合函数的 ...

  10. tomcat端口被占用如何解决

    有时候我们在eclipse中启动项目时,Tomcat服务器会报错,显示8080.8009.8005这几个端口被占用,此时你用debug启动项目时会发现不管用,console控制台什么信息也没有,此时产 ...