题目: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-负权回路判定的更多相关文章

  1. SPFA穿越虫洞——负权回路得判断

    poj3259 题目大意:穿越虫洞可以回到过去(时间--)所以能不能让时间倒流呢,就是判断有没有负权回路这次尝试用SPFA算法,也可以复习一下链式前向星 准备工作,队列q,spfa算法得有点就在于这个 ...

  2. [ACM] POJ 3259 Wormholes (bellman-ford最短路径,推断是否存在负权回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29971   Accepted: 10844 Descr ...

  3. POJ 3259 Wormholes Bellman_ford负权回路

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

  4. ZOJ 3391 Haunted Graveyard(最短路负权回路)题解

    题意:好长...从(0,0)走到(w-1,h-1),墓碑不能走,走到传送门只能进去不能走到其他地方,经过传送门时间会变化w(可能为负),其他地方都能上下左右走.如果能无限返老还童输出Never,走不到 ...

  5. bellman-ford(可判负权回路+记录路径)

    #include<iostream> #include<cstdio> using namespace std; #define MAX 0x3f3f3f3f #define ...

  6. poj 3259 bellman最短路推断有无负权回路

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36717   Accepted: 13438 Descr ...

  7. Bellman-ford算法与SPFA算法思想详解及判负权环(负权回路)

    我们先看一下负权环为什么这么特殊:在一个图中,只要一个多边结构不是负权环,那么重复经过此结构时就会导致代价不断增大.在多边结构中唯有负权环会导致重复经过时代价不断减小,故在一些最短路径算法中可能会凭借 ...

  8. Spfa 求含负权边的最短路 + 判断是否存在负权回路

    在Bellman-Ford算法之后,我们总算迎来了spfa算法,其实就如同堆优化Dijkstra算法之于朴素版Dijkstra算法,spfa算法仅仅是对Bellman-Ford算法的一种优化,但是在形 ...

  9. POJ 3259 Wormholes 邻接表的SPFA判断负权回路

    http://poj.org/problem?id=3259 题目大意: 一个农民有农场,上面有一些虫洞和路,走虫洞可以回到 T秒前,而路就和平常的一样啦,需要花费时间走过.问该农民可不可能从某个点出 ...

随机推荐

  1. Lua 中pairs与ipairs区别

    local tmp_tab = {}; tmp_tab[]="lua"; tmp_tab[]="hello" tmp_tab[]="aaa" ...

  2. SGU 120 Archipelago (简单几何)

    120. Archipelago time limit per test: 0.25 sec.  memory limit per test: 4096 KB Archipelago Ber-Isla ...

  3. 封装自己的yQuery

    function myAddEvent(obj, sEv, fn) { if (obj.attachEvent) { obj.attachEvent('on' + sEv, fn) } else { ...

  4. 网络协议之socks---子网和公网的穿透

    http://www.cnblogs.com/imyijie/p/4595889.html

  5. 从头认识java-18.2 主要的线程机制(7)join

    这一章节我们来讨论一下join. 1.什么是join? 阻塞当前线程,让.join的线程先做完.然后再继续当前线程 以下是api的解释: A.join,在API中的解释是,阻塞当前线程B,直到A运行完 ...

  6. openstack热迁移和冷迁移

    转自: http://www.cnblogs.com/pycode/p/6494848.html 迁移类型: *非在线迁移 (有时也称之为‘迁移’).也就是在迁移到另外的计算节点时的这段时间虚拟机实例 ...

  7. CentOS 6.5在grub界面下更改root密码

    想要更改CentOS 7 root的密码或者忘记了root的密码的时候可以在grub界面下更改root的密码. 百度了很多内容,更多方法都是适用于centos6及以前版本的,终于找到一个可以的. 1. ...

  8. Servlet+Ajax实现搜索智能提示

    一般在百度搜索框输入关键词时,会弹出一些相关信息提示,方便点选: 页面(search.jsp): <input type="text" name="keyWords ...

  9. 感谢各位亲们的大力支持,免费的HTML5学习课程《HTML5网页开发实例具体解释》连载已经结束了!

    感谢各位亲们的大力支持,免费的HTML5学习课程<HTML5网页开发实例具体解释>连载已经结束了.  有兴趣的读者能够看我的博客,也能够看以下的链接逐个学习: 当里个当.免费的HTML5连 ...

  10. Python 入门(十)列表生成式

    生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, ...