POJ 3259 Wormholes(负权环路)
题意:
农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地,M条路连接着两块地,W个虫洞,连接两块地的路是双向的,而虫洞是单向的,去到虫洞之后时间会倒退T秒,如果能遇到离开之前的自己就输出YES,反之就是NO。
分析:
就是求一幅图中有没有负权环路, 可以bellman n-1次后再跑一次看看能不能更新, 能更新说明有环。
也可以spfa记录入队次数, 入队次数大于等于N说明有负权环路
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#define rep(i,a,b) for(int i = a; i < b; i++)
#define _rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;
#define inf 0x3f3f3f3f
const int maxn = , maxm = ;
int N,M,W;
struct E
{
int v, time, nxt;
}Edge[maxm]; int cnt = ;
int head[maxn], enter_cnt[maxn];
int dis[maxn], vis[maxn];
void add_edge(int u , int v, int d){
Edge[cnt].v = v;
Edge[cnt].time = d;
Edge[cnt].nxt = head[u];
head[u] = cnt++;
}
bool spfa(){
fill(dis, dis+maxn, inf);
memset(vis, , sizeof(vis));
memset(enter_cnt, , sizeof(enter_cnt));
queue<int> q;
q.push();
dis[] = ;
vis[] = ;
enter_cnt[]++;
while(!q.empty()){
int u = q.front();
for(int i = head[u]; i != -; i = Edge[i].nxt){
int v = Edge[i].v, d = Edge[i].time;
if(dis[v] > dis[u] + d){
if(++enter_cnt[v] >= N) return false; //如果入队次数 >= N, 那么一定有负权环路
dis[v] = dis[u] + d;
if(!vis[v]){
vis[v] = ;
q.push(v);
}
}
}
vis[u] = ;
q.pop();
}
return true;
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
memset(head, -, sizeof(head));
cnt = ; scanf("%d %d %d", &N, &M, &W);
for(int i = ; i < M; i++)
{
int tu,tv,tt;
scanf("%d %d %d", &tu, &tv, &tt);
add_edge(tu,tv,tt);
add_edge(tv,tu,tt);
}
for(int i = ; i < W; i++)
{
int tu,tv,tt;
scanf("%d %d %d", &tu, &tv, &tt);
add_edge(tu,tv,-tt);
} if(!spfa()) printf("YES\n");
else printf("NO\n");
}
}
POJ 3259 Wormholes(负权环路)的更多相关文章
- ACM: POJ 3259 Wormholes - SPFA负环判定
POJ 3259 Wormholes Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- POJ 3259 Wormholes(最短路径,求负环)
POJ 3259 Wormholes(最短路径,求负环) Description While exploring his many farms, Farmer John has discovered ...
- 最短路(Bellman_Ford) POJ 3259 Wormholes
题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...
- poj - 3259 Wormholes (bellman-ford算法求最短路)
http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...
- [ACM] POJ 3259 Wormholes (bellman-ford最短路径,推断是否存在负权回路)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29971 Accepted: 10844 Descr ...
- poj 3259 Wormholes 判断负权值回路
Wormholes Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java ...
- POJ 3259 Wormholes Bellman_ford负权回路
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- POJ 3259 Wormholes 虫洞(负权最短路,负环)
题意: 给一个混合图,求判断是否有负环的存在,若有,输出YES,否则NO.有重边. 思路: 这是spfa的功能范围.一个点入队列超过n次就是有负环了.因为是混合图,所以当你跑一次spfa时发现没有负环 ...
- POJ 3259 Wormholes(最短路,判断有没有负环回路)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24249 Accepted: 8652 Descri ...
随机推荐
- 关于使用IQKeyBoardManager键盘还是被遮挡的问题解决方案
今天在做一个登录界面的时候发现使用了IQKeyBoardManager键盘还是被遮挡,解决方案如下 解决方案一:在所有视图的最外层添加一个UIView作为容器即可,但在有导航栏的情况下导航栏会跟着向上 ...
- mac 配置nginx 虚拟域名(转载)
我是通过homebrew 安装nginx 的,所以安装目录是默认的,之前多个server都是放在默认安装目录下的nginx.conf里的,但是这样不太好,就是会导致nginx.conf 越来越长,而且 ...
- CSS3鼠标放上去旋转代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 1-docker基础
docker有三个基本概念:镜像/容器/仓库 镜像:一个完整的root文件系统,但并非一个iso的打包文件,而是使用分层存储.构建镜像时,是一层一层的.新的镜像,也可以在原有镜像上添加新层. 容器:是 ...
- 141 Linked List Cycle 环形链表
给定一个链表,判断链表中否有环.补充:你是否可以不用额外空间解决此题?详见:https://leetcode.com/problems/linked-list-cycle/description/ J ...
- MySQL读写分离实现
数据库写入效率要低于读取效率,一般系统中数据读取频率高于写入频率,单个数据库实例在写入的时候会影响读取性能,这是做读写分离的原因.实现方式主要基于mysql的主从复制,通过路由的方式使应用对数据库的写 ...
- [转]Android APK签名原理及方法
准备知识:数据摘要 这个知识点很好理解,百度百科即可,其实他也是一种算法,就是对一个数据源进行一个算法之后得到一个摘要,也叫作数据指纹,不同的数据源,数据指纹肯定不一样,就和人一样. 消息摘要算法(M ...
- poj3616 Milking Time
思路: dp. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...
- HTML的历史与历史遗留问题
1. <style type="text/css"> 从前,HTML的设计者认为以后应该还会有其他样式,不过如今我们已经醒悟,事实表明,完全可以只使用<style ...
- zc.buildout构建项目时报错‘AttributeError: '_NamespacePath' object has no attribute 'sort'’
在使用zc.buildout构建项目时如果碰到‘AttributeError: '_NamespacePath' object has no attribute 'sort'’报错: An inter ...