题目: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. linux内存查看及释放

    查看内存 常用的查看内存工具有:top,ps,free,/proc/meminfo,/proc/$PID/status等,一般都指定了虚拟内存占用情况,但ps或/proc/$PID/status中RS ...

  2. asp.net mvc 4 AntiForgery 提供的防伪标记适用于用户“”,但当前用户为“XX” 问题处理记录

    情景:    某页面未登录下可以访问,但具体操作时发现未登录就弹出登录窗,待完成登录后继续操作. 当登录成功,前端继续操作(post后端接口)时发现以下错误:   提供的防伪标记适用于用户“”,但当前 ...

  3. CF555B 贪心

    http://codeforces.com/problemset/problem/555/B B. Case of Fugitive time limit per test 3 seconds mem ...

  4. osql.exe 批处理sql 文件

    .bat文件内容 "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\osql.exe" -U sa -P sa -S 19 ...

  5. spring 优点

    spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...

  6. 修改php上传文件尺寸、响应时间、时区时间等设置

    修改php上传文件尺寸.响应时间 1.修改php.ini 1.post_max_size 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M(改为150M),看你自己需要进行 ...

  7. notepadd添加插件

    markdown相关插件: https://www.cnblogs.com/tocy/p/npp-support-markdonw-extension.html

  8. [Java并发包学习七]解密ThreadLocal

    概述 相信读者在网上也看了非常多关于ThreadLocal的资料,非常多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路:ThreadLocal的目的是为了解决多线程訪 ...

  9. vs2008 调试时不会命中断点,源代码与原始版本不同,解决办法

    当前不会命中断点,源代码与原始版本不同,解决办法 1.应该是自己一行里写的代码太长了 格式化一下 或者 换下行 2. VC直接把整个文件格式化了一次,断点就可以用了 菜单:编辑-〉高级-〉设置选定内容 ...

  10. fstrict-aliasing

    承如“optimization blocks”文中所述,由于相同的指针可能指向相关的内存区,因此编译器将不做过分的优化…… 特意搜了下编译器在不同的优化等级下都有哪些默认优化,因此有了此记录(比较长, ...