题意:

有n个点  m条边  每个边有权值

一开始有一百血  每次经过一条路都会加上其权值

判断是否能够到达n

显然  有正环的时候肯定能够到达

最短路好题!!!!!!!

显用folyed判断是否联通

然后用spfa更新最长路

因为每次更新的都是最长路  所有有环的时候肯定是正环  这时候直接return即可

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define REP(i,N) for(int i=0;i<(N);i++)
#define CLR(A,v) memset(A,v,sizeof A)
//////////////////////////////////
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f
#define N 300
struct node
{
int v,to,nex;
}edge[];
int head[N],pos=;
void add(int a,int b,int c)
{
edge[++pos].nex=head[a];
head[a]=pos;
edge[pos].v=c;
edge[pos].to=b;
} int mp[N][N];
int n; int vis[N];
int dis[N];
int cnt[N]; bool spfa()
{
rep(i,,n)
{
vis[i]=;
dis[i]=-inf;//求最长路
cnt[i]=;
}
queue<int>q;
q.push(); vis[]=;
cnt[]=;
dis[]=;
while(!q.empty())
{
int u=q.front();q.pop();
vis[u]=;
for(int i=head[u];i;i=edge[i].nex)
{
int v=edge[i].to;
if(dis[v]<dis[u]+edge[i].v && dis[u]+edge[i].v> )
{
dis[v]=dis[u]+edge[i].v;
if(!vis[v])
{
cnt[v]++;
if(cnt[v]>n)return mp[v][n];//这里写成mp[i][n]dubug了一个小时
vis[v]=;
q.push(v);
}
}
}
}
return dis[n]>;
} int main()
{
while(RI(n)&&n!=-)
{
rep(i,,n)rep(j,,n)if(i!=j)mp[i][j]=;else mp[i][j]=;
pos=;
CLR(head,); rep(i,,n)
{
int v,k;RII(v,k);
while(k--)
{
int x;
RI(x);
mp[i][x]=;
add(i,x,v);
}
}
rep(k,,n)
rep(i,,n)
rep(j,,n)
mp[i][j]=mp[i][j]||mp[i][k]&&mp[k][j]; if(!mp[][n]) printf("hopeless\n");
else
{
if(spfa()) printf("winnable\n");
else printf("hopeless\n");
}
}
return ;
}

XYZZY spfa 最长路 判环的更多相关文章

  1. 【bzoj1179】[Apio2009]Atm Tarjan缩点+Spfa最长路

    题目描述 输入 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号.接下来N行,每 ...

  2. poj 1932 XYZZY(spfa最长路+判断正环+floyd求传递闭包)

    XYZZY Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4154   Accepted: 1185 Description ...

  3. POJ2240:Arbitrage(最长路+正环)

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29374   Accepted: 12279 题目链接: ...

  4. HDU1529-Casher Emploryment(最最...最经典的差分约束 差分约束-最长路+将环变线)

    A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its n ...

  5. 洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur (SCC缩点,SPFA最长路,枚举反边)

    P3119 [USACO15JAN]草鉴定Grass Cownoisseur 题目描述 In an effort to better manage the grazing patterns of hi ...

  6. POJ3160强连通+spfa最长路(不错)

    题意:       给你一个有向图,每个点上有一个权值,可正可负,然后给你一些链接关系,让你找到一个起点,从起点开始走,走过的边可以在走,但是拿过权值的点就不能再拿了,问最多能拿到多少权值? 思路: ...

  7. HDU 6201 2017沈阳网络赛 树形DP或者SPFA最长路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6201 题意:给出一棵树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过 ...

  8. Tarjan缩点+Spfa最长路【p3627】[APIO2009] 抢掠计划

    Description Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是,Siruseri ...

  9. [BZOJ1663] [Usaco2006 Open]赶集(spfa最长路)

    传送门 按照时间t排序 如果 t[i] + map[i][j] <= t[j],就在i和j之间连一条边 然后spfa找最长路 #include <queue> #include &l ...

随机推荐

  1. Alibaba Java开发手册索引规约学习笔记

    最近一段时间再看阿里巴巴 Java开发手册索引规约,写篇帖子总结一下,索引规约内容如下 为了通用,更为了避免造数据的痛苦,文中所涉及表.数据,均来自于MySQL官网提供的示例库employees,可通 ...

  2. vue-微信支付or支付宝支付片段

      <ulclass="way_list"> <li v-if="!isWeixinBrowser" class="group al ...

  3. ArcGis——好好的属性表,咋就乱码了呢?

    我就瞎说一下,反正你也不懂. ——见到许多ArcGis属性表乱码的问题,也见过各种哭笑不得的解说 目录 第一节 字符编码那些事儿→字符编码简述 第二节 都是编码惹的祸→ArcGis属性表出错原因 第三 ...

  4. 半导体制造、Fab以及Silicon Processing的基本知识

    本文转载自微信公众号 - 手机技术资讯 , 链接 https://mp.weixin.qq.com/s/602xLKXcIw4ccTnhvDP1xw

  5. 五十八、linux 编程——UDP 编程 广播

    58.1 广播介绍 58.1.1 介绍 广播实现一对多的通讯 它通过向广播地址发送数据报文实现的 58.1.2 套接字选项 套接字选项用于修饰套接字以及其底层通讯协议的各种行为.函数 setsocko ...

  6. zipline框架--简介

    Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. Zip ...

  7. webpack之proxyTable设置跨域

        可以看看这个视频中的介绍 :https://ke.qq.com/course/350693?tuin=f158ed6

  8. 多个div实现随意拖拽功能

    鼠标事件 mousedownmousemovemouseup注意事项:被拖动的div的position属性值一定是absolute.切记不可使用margin-top:10px;而应该使用top:10p ...

  9. RestTemplate通过InputStreamResource上传文件

    需求:从ftp取文件并http调用某接口上传此文件 偷懒的话可以从ftp上取文件存到本地,再调用接口上传文件,如下 String ftpPath = "/ftp/path/file.bin& ...

  10. Django unittest 单元测试

    这里就不再介绍单元测试的作用了. 首先单元测试的创建方式有两种,一种是app下面的test文件,另一种是自定义方式创建 方法一.使用test.py文件测试 from django.test impor ...