hdu 1317 spfa 算法 判断正环
来源:互联网 发布:东莞网络 编辑:程序博客网 时间:2024/06/05 01:54
/*题意 最多有100个房间,每个房间里有正能量和负能量,然后你的初始能量为100从1开始走,走到n能不能能量为正,走到每一个房间的能量必须大于0,输入输出的意思是;一个有n个房间,后面的n行表示第一个表示 房间的权,第二个 k 表示他可以连到几个房间,后面的 k个数表示第i个房间与他相连,权为p思路:这里是用的spfa算法判断正环。百度百科中说道 当边有负权的时候就要用到spfa算法,但是这个算法不能处理负环的情况当一个节点进入队列的次数>=n次 就表示此节点在一个负环上,然后这里我们是要求的最大路径,就是要求正环,当一个节点在一个正环上他可以一直绕,所以当他在正环上 他的体力就是无限的。此时只需要这个图与n联通即可。*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<vector>#include<queue>using namespace std;#define INF 999999999 struct edge{ int from,to,w;};vector<edge>edges;vector<int> G[101];void addedge(int x,int y,int w)//把边保存起来的函数{ edge a={x,y,w}; edges.push_back(a); G[x].push_back(edges.size()-1);}int n;int dis[101];int vis[101];int bfs(){ memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { dis[i]=-INF; } queue<int>q; q.push(1); dis[1]=100; int b; while(!q.empty()) { b=q.front(); //printf("%d \n",b); q.pop(); vis[b]++; if(vis[b]==n) dis[b]=INF; for(int i=0;i<G[b].size();i++) { edge c=edges[G[b][i]]; if(dis[b]+c.w>dis[c.to]&&dis[b]+c.w>0) { dis[c.to]=dis[b]+c.w; if(c.to==n) return 1; q.push(c.to); } } } return 0;}int main(){ while(scanf("%d",&n)&&n!=-1) { for(int i=1;i<=n;i++) G[i].clear(); edges.clear(); for(int i=1;i<=n;i++) { int w,x; scanf("%d%d",&w,&x); for(int j=1;j<=x;j++) { int y; scanf("%d",&y); addedge(i,y,w); } } if(bfs()) printf("winnable\n"); else printf("hopeless\n"); }}
阅读全文
1 0
- hdu 1317 spfa 算法 判断正环
- POJ1860 SPFA判断正环
- HDU:1317 XYZZY(SPFA处理正环+Flody判断点连通)
- hdu 1317 XYZZY spfa判断负环
- POJ 1860 Currency Exchange(SPFA 判断有无“正”环)
- POJ 1932 XYZZY (spfa判断正环+判断是否连通 or SPFA+floyd 求解差分约束)
- HDU 3696 SPFA算法
- HDU 1317 XYZZY Bellman-Ford求最长路 判断正环
- uva 10557 - XYZZY 关键词:正环,无敌bfs,单源最短路spfa算法
- DFS判断正环
- HDU 1317 XYZZY Floyd判断能否到达+SPFA判断能否形成环及求最长路(好题)
- POJ 1860 - Currency Exchange(SPFA正环)
- POJ 3259 Wormholes(SPFA算法判断是否存在负环)
- spfa判断负环
- spfa && 判断负环
- HDU SPFA算法 Invitation Cards
- hdu 2544 spfa算法模板
- hdu 1217 Arbitrage (spfa算法)
- log4j配置
- sublime text3开发python并设置快捷键
- Educational Codeforces Round 25 B Five-In-a-Row 基础题
- offer面试题----1(字符串转换成整数)
- POJ 2054(Color a Tree-贪心)
- hdu 1317 spfa 算法 判断正环
- 30. Substring with Concatenation of All Words
- 对于程序员来说CPU是什么
- HTML+CSS编写静态网站-39 调整About页面
- Educational Codeforces Round 25 C Multi-judge Solving 贪心
- 《暗时间》
- Semaphore与多线程
- 《象与骑象人》
- 第 15 章日常系统维护