题目链接:poj3259 Wormholes

题意:虫洞问题,有n个点,m条边为双向,还有w个虫洞(虫洞为单向,并且通过时间为倒流,即为负数),问你从任意某点走,能否穿越到之前。

贴个SPFA代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<cmath>
using namespace std;
#define lson rt*2
#define rson rt*2+1
#define CLR(a, b) memset((a), (b), sizeof((a)))
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int>pii;
const double inf = 0x3f3f3f3f;
const int N = ;
const int M = *+;
struct node {
int u, v;
int t;
int nex;
}edge[M];
int head[N]; int d[N];
int vis[N]; int n, m, w; int spfa(int x) {
int i, j, k;
queue<int> q;
d[x] = ;
vis[x] = ;
q.push(x);
while(!q.empty()) {
int u = q.front(); q.pop();
vis[u] = ;
for(i = head[u]; ~i; i = edge[i].nex) {
if(d[edge[i].v] > d[u] + edge[i].t) {
d[edge[i].v] = d[u] + edge[i].t;
if(!vis[edge[i].v]) {
vis[edge[i].v] = ;
q.push(edge[i].v);
}
}
}
if(d[x] < ) return ;//存在负权环
}
return ;
}
int main() {
int t, i;
scanf("%d", &t);
while(t--) {
scanf("%d%d%d", &n, &m, &w); for(i = ; i <= n; ++i) head[i] = -; for(i = ; i <= *m; i += ) { //普通路 双向
scanf("%d%d%d", &edge[i].u, &edge[i].v, &edge[i].t);
edge[i].nex = head[edge[i].u];
head[edge[i].u] = i; edge[i+].u = edge[i].v;
edge[i+].v = edge[i].u;
edge[i+].t = edge[i].t;
edge[i+].nex = head[edge[i].v];
head[edge[i].v] = i+;
}
for(; i <= *m+w; ++i) {//虫洞 单向
scanf("%d%d%d", &edge[i].u, &edge[i].v, &edge[i].t);
edge[i].t = -edge[i].t;
edge[i].nex = head[edge[i].u];
head[edge[i].u] = i;
} for(i = ; i <= n; ++i) {
d[i] = inf;
vis[i] = ;
}
int f = ;
for(i = ; i <= n; ++i) {
if(d[i] == inf) {//图可能不连通
if(spfa(i)) {f = ; break;}
}
}
if(f) puts("YES");
else puts("NO");
}
return ;
}

63ms

poj3259 Wormholes【Bellman-Ford或 SPFA判断是否有负环 】的更多相关文章

  1. vijos1053 用spfa判断是否存在负环

    MARK 用spfa判断是否存在负环 判断是否存在负环的方法有很多, 其中用spfa判断的方法是:如果存在一个点入栈两次,那么就存在负环. 细节想想确实是这样,按理来说是不存在入栈两次的如果边权值为正 ...

  2. POJ 3259 Wormholes(最短路,判断有没有负环回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24249   Accepted: 8652 Descri ...

  3. POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)

    题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...

  4. uva558 Wormholes SPFA 求是否存在负环

    J - Wormholes Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Stat ...

  5. uva 558 - Wormholes(Bellman Ford判断负环)

    题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...

  6. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  7. POJ 1151 Wormholes spfa+反向建边+负环判断+链式前向星

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 49962   Accepted: 18421 Descr ...

  8. poj3259Wormholes (Bellman_Ford/SPFA/Floyed算法判断是否存在负环)

    题目链接:http://poj.org/problem?id=3259 题目大意:一个图,有n个顶点,其中有m条边是双向的且权值为为正,w条边是单向的且权值为负,判断途中是否存在负环,如果有输出YES ...

  9. poj 3259 Wormholes 【SPFA&amp;&amp;推断负环】

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36852   Accepted: 13502 Descr ...

随机推荐

  1. 基于resteasy,Base64码上传文件

    package com.xgt.controller.bs; import com.xgt.bean.bs.VersionBean; import com.xgt.common.BaseControl ...

  2. php中array_walk() 和 array_map()两个函数区别

    两个函数的共性和区别: 1.传入这两个函数的 $value,就是数组中的单一个元素. 2.array_walk() 仅返回true或者false,array_map() 返回处理后的数组: 3.要得到 ...

  3. 原创:微信小程序java实现AES解密并获取unionId

    来自:微信小程序联盟 如果大家使用小程序的同时还在使用公众号的话,可能会用到unionId这种功能,由于公司业务需要,我们需要使用unionId,具体使用方法,请参考微信开放平台的说明,但是在微信小程 ...

  4. js获取span标签的值

    <!DOCTYPE html> <html lang="en"><head> <meta charset="UTF-8" ...

  5. Java基础(十三)反射

    一.反射 1.反射概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的 ...

  6. 使用powershell 执行脚本,windows默认不允许任何脚本运行

    使用如下命令让PowerShell运行在无限制的环境之下: Set-ExecutionPolicy Unrestricted

  7. Oracle自定义函数&加密

    在sql中频繁使用的功能(逻辑.加密等)可以写成自定义函数进行封装,之后再调用即可. CREATE OR REPLACE FUNCTION "函数名" (参数名 参数类型 参数数据 ...

  8. Excel的Sheet页复制

    最近在做一个项目,其中涉及基于模板对Excel的Sheet页进行复制.在网上尝试了很多,发现都不够完美,苦恼. 然后在查阅资料的过程中,发现有一篇提及,POI的API只对同一个Excel文件中的She ...

  9. IntelliJ IDEA16 热部署,解决每次修改java文件就得重启tomcat的问题

    这样就可以了....

  10. HTML5拖拽功能中 dataTransfer对象详解

    有了HTML5,老板再也不用担心我们的上传了,再加上有拖拽上传是不是很酷.百度一下,有关HTML5拖拽上传的文章和实例不少,都缺不了一个至关重要的东东DataTransfer.但是详细介绍的不多,尤其 ...