题意:给你m条路花费时间(双向正权路径),w个虫洞返回时间(单向负权路径),问你他能不能走一圈回到原点之后,时间倒流。

思路:题意有点难看懂,我们建完边之后找一下是否存在负权回路,存在则能,反之不能。判断负权回路可以用一个cnt,这个spfa板子里有。

代码:

#include<cstdio>
#include<set>
#include<vector>
#include<cmath>
#include<queue>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 500+5;
const int INF = 0x3f3f3f3f;
struct Edge{
int v;
int w;
Edge(int _v = 0,int _w = 0):v(_v),w(_w){}
};
vector<Edge> G[maxn];
bool vis[maxn];
int cnt[maxn];
int dis[maxn];
bool spfa(int start,int n){
memset(vis,false,sizeof(vis));
for(int i = 1;i <= n;i++) dis[i] = INF;
vis[start] = true;
dis[start] = 0;
queue<int> q;
while(!q.empty()) q.pop();
q.push(start);
memset(cnt,0,sizeof(cnt));
cnt[start] = 1;
while(!q.empty()){
int u = q.front();
q.pop();
vis[u] = false;
for(int i = 0;i < G[u].size();i++){
int v = G[u][i].v;
int w = G[u][i].w;
if(dis[v] > dis[u] + w){
dis[v] = dis[u] + w;
if(!vis[v]){
q.push(v);
vis[v] = true;
if(++cnt[v] > n)
return true;
}
}
}
}
return false;
}
void addEdge(int u,int v,int w){
G[u].push_back(Edge(v,w));
}
int main(){
int n,m,w;
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&w);
for(int i = 1;i <= n;i++) G[i].clear();
int s,e,t;
while(m--){
scanf("%d%d%d",&s,&e,&t);
addEdge(s,e,t);
addEdge(e,s,t);
}
while(w--){
scanf("%d%d%d",&s,&e,&t);
addEdge(s,e,-t);
}
if(spfa(1,n)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}

POJ 3259 Wormholes(最短路&spfa正权回路)题解的更多相关文章

  1. POJ 1860 Currency Exchange(最短路&spfa正权回路)题解

    题意:n种钱,m种汇率转换,若ab汇率p,手续费q,则b=(a-q)*p,你有第s种钱v数量,问你能不能通过转化让你的s种钱变多? 思路:因为过程中可能有负权值,用spfa.求是否有正权回路,dis[ ...

  2. HDU - 1317 ~ SPFA正权回路的判断

    题意:有最多一百个房间,房间之间连通,到达另一个房间会消耗能量值或者增加能量值,求是否能从一号房间到达n号房间. 看数据,有定5个房间,下面有5行,第 iii 行代表 iii 号 房间的信息,第一个数 ...

  3. poj 3259 Wormholes(最短路 Bellman)

    题目:http://poj.org/problem?id=3259 题意:一个famer有一些农场,这些农场里面有一些田地,田地里面有一些虫洞,田地和田地之间有路,虫洞有这样的性质: 时间倒流.问你这 ...

  4. POJ 3259 Wormholes 最短路+负环

    原题链接:http://poj.org/problem?id=3259 题意 有个很厉害的农民,它可以穿越虫洞去他的农场,当然他也可以通过道路,虫洞都是单向的,道路都是双向的,道路会花时间,虫洞会倒退 ...

  5. 解题报告:poj 3259 Wormholes(入门spfa判断负环)

    Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...

  6. POJ 3259 Wormholes (最短路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 34302   Accepted: 12520 Descr ...

  7. ACM: POJ 3259 Wormholes - SPFA负环判定

     POJ 3259 Wormholes Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu   ...

  8. 最短路(Bellman_Ford) POJ 3259 Wormholes

    题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...

  9. poj - 3259 Wormholes (bellman-ford算法求最短路)

    http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...

随机推荐

  1. 【WebService】快速构建WebService示例

    package com.slp.webservice; import javax.jws.WebService; /** * Created by sanglp on 2017/2/25. * 接口 ...

  2. 微信小游戏5.2.2 没有xml支持库的问题解决

    需要下载xml支持库,并在game.js添加 window.DOMParser = require("./xmldom/xmldom.js").DOMParser; 如下图:

  3. EUI Scroller实现自定义图片轮播 组件ScrollView

    一 自定义组件如下 /** * 文 件 ScrollView.ts * 功 能: 滚动组件 * 内 容: 自定义组件,支持多张图片水平(垂直)切换滚动 * * Example: * 1. 从自定义组件 ...

  4. Windows 2008 server R2安装.NET Framework4时提示“灾难性故障”

    报错信息: 安装.NET Framework 4时,提示安装未成功,“灾难性故障”.服务器的操作系统是windows  server 2008 R2. 查看系统日志时显示“无法安装 Windows 更 ...

  5. IOS中使用轻量级数据库

    IOS中使用轻量级数据库 目录 概述 IOS中的轻量级数据库 sqlite的方法 数据库的实用操作 第三方类库 FMDatabase 概述 IOS中的轻量级数据库 sqlite的方法 sqlite3 ...

  6. 设计模式之一:单例模式(Singleton Pattern)

    写这个系列的文章,只为把所学的设计模式再系统的整理一遍.错误和不周到的地方欢迎大家批评.点击这里下载源代码. 什么时候使用单例模式 在程序运行时,某种类型只需要一个实例时,一般采用单例模式.为什么需要 ...

  7. 【BZOJ4922】[Lydsy六月月赛]Karp-de-Chant Number 贪心+动态规划

    [BZOJ4922][Lydsy六月月赛]Karp-de-Chant Number Description 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很 ...

  8. Oracle各种表空间

    system表空间:含数据字典信息 sysaux表空间:存储各种oracle应用的元数据(如AWR的操作数据) 创建表空间后,不能改变区尺寸 区尺寸管理:自动分配(AUTOALLOCATE):小段64 ...

  9. 170724、springboot编程之完整demo

    综合之前学习,参考网上各大神博客,写了一个小demo,需要的朋友可以参考一下! 项目地址:https://github.com/zrbfree/spring-boot-anna.git

  10. CodeForces 19B Checkout Assistant

    B. Checkout Assistant time limit per test 1 second memory limit per test 256 megabytes input standar ...