题目链接:http://poj.org/problem?id=3259 题目大意:一个图,有n个顶点,其中有m条边是双向的且权值为为正,w条边是单向的且权值为负,判断途中是否存在负环,如果有输出YES,没有输出NO. Sample Input 2 3 3 1 1 2 2 1 3 4 2 3 1 3 1 3 3 2 1 1 2 3 2 3 4 3 1 8 Sample Output NO YES 解题思路:套用Bellman_Ford算法判断图是否存在负环具体详见代码: #include<iost…
如果存在最短路径的边数大于等于点数,就有负环 给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你判断图中是否存在负权回路. 输入格式 第一行包含整数n和m. 接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z. 输出格式 如果图中存在负权回路,则输出"Yes",否则输出"No". 数据范围 1≤n≤20001≤n≤2000,1≤m≤100001≤m≤10000,图中涉及边长绝对值均不超过10000. 输入样例…
题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前的自己. 思路: 这题就是判断存不存在负环回路. 前M条是双向边,后面的W是单向的负边. 为了防止出现不连通,增加一个结点作为起点.起点到所有点的长度为0 #include <iostream> #include <stdio.h> #include <string.h>…
MARK 用spfa判断是否存在负环 判断是否存在负环的方法有很多, 其中用spfa判断的方法是:如果存在一个点入栈两次,那么就存在负环. 细节想想确实是这样,按理来说是不存在入栈两次的如果边权值为正的话 这个算法是O(N*M) 还有一种方法是直接用bellman-ford,虽说spfa也就是bellman-ford+FIFO队列 而且bellman-ford还可以计算负环的值 顺手附上代码好了: for(int i=0;i<n;i++) d[i]=INF;//初始化 d[0]=0; for(i…
Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24249   Accepted: 8652 Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way pa…
以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt. 可是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的.所以如今他们想要寻找最短的从商店到赛场的路线.你能够帮助他们吗?   Input 输入包含多组数据. 每组数据第一行是两个整数N.M(N<=100.M<=10000).N表示成都的大街上有几个路口,标号为1的路口是商店所在地.标号为N的路口是赛场所在地,M则表示在成都有几条路.…
#include <iostream> #include <vector> #include<string> #include<cstring> using namespace std; # define ll long long # define maxn 1000+10 # define inf 0x3f3f3f3f int n,m,t; double mg; struct node { int to; double lv; double yon; no…
[模板]负环 描述 找负环 输入 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w的边(若w<0则为单向,否则双向) 输出 共T行.对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号). 样例 输入 2 3 4 1 2 2 1 3 4 2 3 1 3 1 -3 3 3 1 2 3 2 3 4 3 1 -8 输…
/** problem: http://poj.org/problem?id=3259 spfa判负环: 当有个点被松弛了n次,则这个点必定为负环中的一个点(n为点的个数) spfa双端队列优化: 维护队列使其dist小的点优先处理 **/ #include<stdio.h> #include<deque> #include<algorithm> using namespace std; class Graphics{ ; * + ; const static int…
题目链接:poj3259 Wormholes 题意:虫洞问题,有n个点,m条边为双向,还有w个虫洞(虫洞为单向,并且通过时间为倒流,即为负数),问你从任意某点走,能否穿越到之前. 贴个SPFA代码: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<stack> #include<…