HDU 1317 XYZZY【Bellman_Ford判断正环】
题意:给出n个房间,初始在房间1有100的能量值,每次进入一个房间,能量值可能增加也可能减小,(是点权,不是边权),问能否到达终点的时候能量值还为正
这题自己写的时候wa--wa--
后来看了题解,还是wa---wa---
题解很详细http://blog.csdn.net/freezhanacmore/article/details/9937327
记录下自己犯的错误吧
首先是floyd函数初始化的时候,直接写在了函数里面,这样是不对的,因为输入值在前,调用函数在后,这样就相当于将之前输入的可能部分改变了(这个改了好久啊-----55555)
还有就是Bellman_ford时,因为是求正环,所以是d[i][j]=-INF(i!=j)
还有就是输入的权值是点权
#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = ;
const int mod=;
const int maxn=;
int en[maxn],d[maxn],w[maxn][maxn];
int n,m,ecnt; struct Edge{
int u,v;
} e[maxn*maxn]; void add(int u,int v){
e[++ecnt].u=u;
e[ecnt].v=v;
} void floyd(){
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
w[i][j]=w[i][j]||(w[i][k]&&w[k][j]);
} int Bellman_ford(){
for(int i=;i<=n;i++) d[i]=-INF;
d[]=; for(int i=;i<n;i++){
for(int j=;j<=ecnt;j++){
int v=e[j].v;
int u=e[j].u;
if(d[v]<d[u]+en[v]&&d[u]+en[v]>){
d[v]=d[u]+en[v];
}
}
} for(int j=;j<=ecnt;j++){
int v=e[j].v;
int u=e[j].u;
if((d[v]<d[u]+en[v])&&d[u]+en[v]>) {
if(w[v][n])
return ;
}
}
return d[n]>;
} int main(){
int num;
while(scanf("%d",&n)!=EOF&&n!=-){
ecnt=; memset(en,,sizeof(en));
memset(w,,sizeof(w));
for(int i=;i<=n;i++) w[i][i]=;
for(int i=;i<=n;i++){
scanf("%d %d",&en[i],&num);
while(num--){
int u;
scanf("%d",&u);
w[i][u]=;
add(i,u);
}
} floyd();
if(Bellman_ford()) printf("winnable\n");
else printf("hopeless\n");
}
return ;
}
加油啊- go---go--go
HDU 1317 XYZZY【Bellman_Ford判断正环】的更多相关文章
- poj 1860 (Bellman_Ford判断正环)
题意:给出n种货币,m中交换关系,给出两种货币汇率和手续费,求能不能通过货币间的兑换使财富增加. 用Bellman_Ford 求出是否有正环,如果有的话就可以无限水松弛,财富可以无限增加. #incl ...
- hdu 1317 XYZZY【Bellheman_ford 判断正环小应用】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1317 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 1317 XYZZY(floyd+bellman_ford判环)
http://acm.hdu.edu.cn/showproblem.php?pid=1317 题意: 给出一个有向图,每到达一个点,都会加上或减去一些能量,我们要做的就是判断从1出发是否能到达n.初始 ...
- poj - 1860 Currency Exchange Bellman-Ford 判断正环
Currency Exchange POJ - 1860 题意: 有许多货币兑换点,每个兑换点仅支持两种货币的兑换,兑换有相应的汇率和手续费.你有s这个货币 V 个,问是否能通过合理地兑换货币,使得你 ...
- [HDU 1317]XYZZY[SPFA变形][最长路]
题意: 一个图, 点权代表走到该点可获得的能量值. 可正可负. 一个人从1 号出发,带有100点能量. 问是否有一种方案可使人在能量值>0的时候走到n. 思路: 这个题首先要注意点权. 其实就是 ...
- Currency Exchange POJ - 1860 (spfa判断正环)
Several currency exchange points are working in our city. Let us suppose that each point specializes ...
- poj1860 兑换货币(bellman ford判断正环)
传送门:点击打开链接 题目大意:一个城市有n种货币,m个货币交换点,你有v的钱,每个交换点只能交换两种货币,(A换B或者B换A),每一次交换都有独特的汇率和手续费,问你存不存在一种换法使原来的钱更多. ...
- Currency Exchange POJ - 1860 spfa判断正环
//spfa 判断正环 #include<iostream> #include<queue> #include<cstring> using namespace s ...
- HDU 1317(Floyd判断连通性+spfa判断正环)
XYZZY Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
随机推荐
- 【回文字符串】 最长回文子串O(N) Manacher算法
原理讲的清晰:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串 注意: ①动态生命P[]和newStr数组后,不要忘记delete[] //其实这是基本的编码习惯 ②最终 ...
- 再深入一点ajax
1.建立兼容性强的XHR对象有那么复杂么? 看过一些书,书上为了写针对低版本IE和其他非IE浏览器需要写一大串兼容函数,典型的就是JS高级程序上的. 可是在现实开发中,为了兼容IE6/IE7,只需要这 ...
- Javascript获取URL参数值
getQueryString: function (name) { var reg = new RegExp("(^|&)" + name.toLowerCase() + ...
- 获取及管理Android 手机运营商及状态
主要类 TelephonyManager: telephonyManager.getCellLocation();//获得服务区 telephonyManager.getCellId();//获得服务 ...
- ARM系列产品
ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 SecurCore系列 Intel的StrongARM ARM11系列 Intel的Xscale 其中,ARM7.ARM9.ARM9E和A ...
- iScroll.js 用法参考
本文原文链接:http://www.cnblogs.com/duanhuajian/archive/2013/04/08/3008323.html 概要 iScroll 4 这个版本完全重写了iScr ...
- 用Stopwatch类获得程序运行时间
我们可以用Stopwatch类获得程序的运行时间,在优化代码时,可以用此方法来查看优化前后程序所耗费的时间 //Stopwatch类別在System.Diagnostics命名空间里 Stopwatc ...
- HBase保存的各个字段意义解释
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
- [网页设计]Ajax、Comet与Websocket--转
从http协议说起 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展.这种分布式.无状态.基于TCP的请求/响应式.在 ...
- Edius 安装 looks插件整理
需要安装looks插件到指定目录,在后面桥接时选择该目录. 包括安装looksbuilder插件.