poj 1932 XYZZY (最短路径)
| Time Limit: 1000MS | Memory Limit: 30000K | |
| Total Submissions: 3105 | Accepted: 887 |
Description
It has recently been discovered how to run open-source software on the Y-Crate gaming device. A number of enterprising designers have developed Advent-style games for deployment on the Y-Crate. Your job is to test a number of these designs to see which are winnable.
Each game consists of a set of up to 100 rooms. One of the rooms is the start and one of the rooms is the finish. Each room has an energy value between -100 and +100. One-way doorways interconnect pairs of rooms.
The player begins in the start room with 100 energy points. She may pass through any doorway that connects the room she is in to another room, thus entering the other room. The energy value of this room is added to the player's energy. This process continues until she wins by entering the finish room or dies by running out of energy (or quits in frustration). During her adventure the player may enter the same room several times, receiving its energy each time.
Input
- the energy value for room i
- the number of doorways leaving room i
- a list of the rooms that are reachable by the doorways leaving room i
The start and finish rooms will always have enery level 0. A line containing -1 follows the last test case.
Output
Sample Input
5
0 1 2
-60 1 3
-60 1 4
20 1 5
0 0
5
0 1 2
20 1 3
-60 1 4
-60 1 5
0 0
5
0 1 2
21 1 3
-60 1 4
-60 1 5
0 0
5
0 1 2
20 2 1 3
-60 1 4
-60 1 5
0 0
-1
Sample Output
hopeless
hopeless
winnable
winnable
Source
//208K 157MS C++ 1444B 2013-11-23 17:33:33
/* 题意:
给出一个单向图,每个点有一个权值,每到一个点就要加上该点的权值,判断是否存在从
点1到点n的路径. 最短路径:
网上解法很多.这里是其中一种,spfa+floyd
题目解法思路是差不多的,就是先判断是否存在一条路径符合,如果不存在在判断途中是否有正环,
如果有正环就判断该环是否与点n连通,连通表示存在。
其中两部分都有很多算法可以解.有兴趣的同学可以自己试试.. 这里spfa判断是否存在最短路,floyd判断是否有是否连通
*/
#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
int n;
int g[][];
int w[];
int spfa()
{
queue<int>Q;
int max,now;
int vis[]={};
int in[]={};
int d[]={};
d[]=;
vis[]=;
Q.push();
in[]++;
while(!Q.empty()){ //spfa
int u=Q.front();
Q.pop();
vis[u]=;
if(in[u]>n) break;
for(int i=;i<=n;i++){
if(g[u][i] && d[i]<d[u]+w[i]){
d[i]=d[u]+w[i];
if(!vis[i]){
in[i]++;
Q.push(i);
vis[i]=;
}
}
}
}
if(d[n]>) return ; //存在最短路
else{
for(int k=;k<=n;k++) //floyd
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(g[i][k] && g[k][j])
g[i][j]=;
for(int i=;i<=n;i++)
if(in[i]>n && g[][i] && g[i][n]) //存在正环和连通
return ;
}
return ;
}
int main(void)
{
int m,to;
while(scanf("%d",&n),n!=-)
{
memset(g,,sizeof(g));
for(int i=;i<=n;i++){
scanf("%d%d",&w[i],&m);
while(m--){
scanf("%d",&to);
g[i][to]=;
}
}
if(spfa()) puts("winnable");
else puts("hopeless");
}
return ;
}
poj 1932 XYZZY (最短路径)的更多相关文章
- POJ 1932 XYZZY (ZOJ 1935)SPFA+floyd
http://poj.org/problem?id=1932 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1935 题目大 ...
- poj 1932 XYZZY(spfa最长路+判断正环+floyd求传递闭包)
XYZZY Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4154 Accepted: 1185 Description ...
- spfa+floyed+最长路+差分约束系统(F - XYZZY POJ - 1932)(题目起这么长感觉有点慌--)
题目链接:https://cn.vjudge.net/contest/276233#problem/F 题目大意:给你n个房子能到达的地方,然后每进入一个房子,会消耗一定的生命值(有可能是负),问你一 ...
- poj 2253 (dis最短路径)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24979 Accepted: 8114 Descript ...
- poj 2240 Arbitrage (最短路径)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13800 Accepted: 5815 Descri ...
- poj 2253 Frogger (最短路径)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22557 Accepted: 7339 Descript ...
- poj 3259Wormholes (spfa最短路径)
#include<stdio.h> #include<string.h> #include<limits.h> #include<queue> usin ...
- poj 3259(bellman最短路径)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30169 Accepted: 10914 Descr ...
- poj 1125 (floyed 最短路径)
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26395 Accepted: ...
随机推荐
- 12、SpringBoot------activeMq的简单使用
开发工具:STS 前言: What is ActiveMq? ActiveMq:实现了Jms规范的一款Java 消息中间件. 消息中间件: 处理消息的一个消息机制,负责接收消息与转发. 用途: (1) ...
- tomcat.apache startup.bat闪退两种解决方法
tomcat bin文件夹中的startup.bat闪退原因及解决方法两种 方法一:在启动tomcat时闪退,重新检查java的jre运行环境.如果环境变量忘记配置一定会导致了tomcat的闪退. 追 ...
- OceanBase安装
背景: OceanBase是阿里巴巴.蚂蚁金服自主研发的可扩展的分布式关系数据库,实现了数千亿条记录.数百 TB 数据上的跨行跨表事务,主要支持支付宝核心的交易.支付.会员和账务系统等 OLTP 和 ...
- 多任务版udp聊天器
import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方"&quo ...
- 【shopex】添加网页挂件widgets
一步步做个widgets 基础篇 首先建立一个目录plugins/widgets/helloword 这个就是新的挂件目录,系统的每个widgets都是一个目录 里面放两个文件: widgets.ph ...
- c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】
引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...
- python__基础 : 类的继承,调用父类的属性和方法
1.继承,调用父类属性方法 在python里面,继承一个类只需要这样写: class Animal: def heshui(self): print('动物正在喝水') class Cat(Anima ...
- 完善压缩处理类(支持主流的图像类型(jpg、png、gif)
<?php /* * 图像压缩 */ class Thumb { //成员属性 private $file; //原图文件 private $thumb_path; //压缩文本件保存的地址 / ...
- Delphi中DLL的创建和使用(转)
Delphi中DLL的创建和使用 1.DLL简介: 2.调用DLL: 3.创建DLL: 4.两个技巧: 5.初始化: 6.例外处理. 1.DLL简介 ...
- busybox编译 fatal error: curses.h: 没有那个文件或目录解决办法
执行make menuconfig时出现如下错误@ubuntu:/home/dev/busybox-1.19.3# make menuconfig HOSTCC scripts/kconfig/lxd ...