POJ3259-负权回路判定
题目:http://vj.acmclub.cn/contest/view.action?cid=316#problem/E
首先要理解题意:其实就是给你一个图让你判断有没有负权回路
因此直接用BallmenFord算法就可以了
特别注意一些问题:path是双向的因此要写两遍
代码:
# include<iostream>
//# include<queue>
# include<cstring> using namespace std; const int INF = ;
const int MAXN = ;
int u[MAXN], v[MAXN], w[MAXN]; int N, M, W, k; int dis[]; bool bellman_ford()
{
bool check = ; memset(dis, INF, sizeof(dis));
dis[] = ; for (int i = ; i < N - ; i++)
{
check = ; for (int j = ; j < k; j++)
{
if (dis[u[j]]<INF&& dis[v[j]] > dis[u[j]] + w[j])
{
check = ;
dis[v[j]] = dis[u[j]] + w[j];
}
} if (check)
return false;
} for (int i = ; i <k; i++)
if (dis[u[i]]<INF&&dis[v[i]] > dis[u[i]] + w[i])
return true;
return false;
} int main()
{
int F, s, e, t;
cin >> F;
while (F--)
{
k = ;
cin >> N >> M >> W; for (int i = ; i <= M; i++)
{
cin >> s >> e >> t;
u[k] = s;
v[k] = e;
w[k] = t;
k++;
u[k] = e;
v[k] = s;
w[k] = t;
k++;
} for (int i = ; i <= W; i++)
{
cin >> s >> e >> t;
u[k] = s;
v[k] = e;
w[k] = -t;
k++; } if (bellman_ford())
cout << "YES" << endl;
else
cout << "NO" << endl;
} //system("pause"); return ;
}
本来是想用一下SPFA的,尝试了一下队列+vector的操作,结果WA了
对vector的用法可能还不不是太熟悉,另外SPFA也没太理解,尤其是用SPFA判断负权回路很麻烦
待我再研究
POJ3259-负权回路判定的更多相关文章
- SPFA穿越虫洞——负权回路得判断
poj3259 题目大意:穿越虫洞可以回到过去(时间--)所以能不能让时间倒流呢,就是判断有没有负权回路这次尝试用SPFA算法,也可以复习一下链式前向星 准备工作,队列q,spfa算法得有点就在于这个 ...
- [ACM] POJ 3259 Wormholes (bellman-ford最短路径,推断是否存在负权回路)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29971 Accepted: 10844 Descr ...
- POJ 3259 Wormholes Bellman_ford负权回路
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- ZOJ 3391 Haunted Graveyard(最短路负权回路)题解
题意:好长...从(0,0)走到(w-1,h-1),墓碑不能走,走到传送门只能进去不能走到其他地方,经过传送门时间会变化w(可能为负),其他地方都能上下左右走.如果能无限返老还童输出Never,走不到 ...
- bellman-ford(可判负权回路+记录路径)
#include<iostream> #include<cstdio> using namespace std; #define MAX 0x3f3f3f3f #define ...
- poj 3259 bellman最短路推断有无负权回路
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36717 Accepted: 13438 Descr ...
- Bellman-ford算法与SPFA算法思想详解及判负权环(负权回路)
我们先看一下负权环为什么这么特殊:在一个图中,只要一个多边结构不是负权环,那么重复经过此结构时就会导致代价不断增大.在多边结构中唯有负权环会导致重复经过时代价不断减小,故在一些最短路径算法中可能会凭借 ...
- Spfa 求含负权边的最短路 + 判断是否存在负权回路
在Bellman-Ford算法之后,我们总算迎来了spfa算法,其实就如同堆优化Dijkstra算法之于朴素版Dijkstra算法,spfa算法仅仅是对Bellman-Ford算法的一种优化,但是在形 ...
- POJ 3259 Wormholes 邻接表的SPFA判断负权回路
http://poj.org/problem?id=3259 题目大意: 一个农民有农场,上面有一些虫洞和路,走虫洞可以回到 T秒前,而路就和平常的一样啦,需要花费时间走过.问该农民可不可能从某个点出 ...
随机推荐
- java——关于数组的定义 和 访问修饰符的修饰内容
public class Shuzu { public static void main(String[] args) { // 定义数组 必须初始化长度,没有初始化要放数据 int[] in = { ...
- EMC检测标准
- Android基础工具类重构系列一Toast
前言: 一直在考虑写一下Android实际项目中的一些总结,翻看CSDN博客,上一篇已经是一年多曾经. 本系列定位Android基础工具类重构.旨在记录实际项目中经经常使用到的一些工具类,比方Toas ...
- centsos各个版本的区别
CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了CentOS-7.0-1406-x86_64-NetInstall.iso ...
- JPA多对多关联
关于JPA多对多关系,这是使用学生与教师来表示.一个Student由多个Teacher教,同样一个Teacher也可以教多个学生.Student类如下: package com.yichun.bean ...
- bootstrap-slider插件使用方法
bootstrap-slider例子地址:https://seiyria.com/bootstrap-slider/ bootstrap-slider github地址:https://github. ...
- position属性absolute(绝对定位),relatve(相对定位)
position:absolute这个是绝对定位:是相对于浏览器的定位. position:relative这个是相对定位:是居于上一个流体而言
- R语言中字符串的拼接操作
在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量. 函数paste的一般使用格式为: paste(..., sep = " ", collapse ...
- selenium测试(Java)--下拉框(二十一)
例子: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
- Android XmlPullParser 笔记
使用XmlPullParser解析xml文件. 要解析的xml文件如下所示. weather.xml <?xml version="1.0" encoding="u ...