hdu 1317 XYZZY
2014-04-23 14:48
309 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1317
View Code
#include <cstdio> #include <queue> #include <cstring> #include <algorithm> #define maxn 1001 using namespace std; const int inf=1<<28; int dis[maxn]; bool vis[maxn]; int n,m,x; int a[maxn]; bool g[maxn][maxn]; int cnt[maxn]; bool spfa() { queue<int>q; memset(vis,false,sizeof(vis)); memset(cnt,0,sizeof(cnt)); for(int i=1; i<=n; i++) dis[i]=0; dis[1]=100; q.push(1); vis[1]=true; while(!q.empty()) { int u=q.front();q.pop(); vis[u]=false; if(u==n) { return true; } if(cnt[u]==n+1) { continue; } cnt[u]++; if(cnt[u]==n+1) { dis[u]=inf; } for(int i=1; i<=n; i++) { if(g[u][i]) { if(dis[i]<dis[u]+a[i]&&(dis[u]+a[i]>0)) { dis[i]=dis[u]+a[i]; if(!vis[i]) { vis[i]=true; q.push(i); } } } } } return false; } int main() { while(scanf("%d",&n)!=EOF) { if(n==-1) break; memset(g,false,sizeof(g)); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); scanf("%d",&m); for(int j=0; j<m; j++) { scanf("%d",&x); g[i][x]=true; } } if(spfa()) { printf("winnable\n"); } else printf("hopeless\n"); } return 0; }
View Code
相关文章推荐
- hdu 1317 XYZZY【Bellheman_ford 判断正环小应用】
- HDU-1317 XYZZY
- HDU 1317 XYZZY
- Hdu 1317 XYZZY[floyd+bellman_ford]
- hdu 1317 XYZZY
- HDU 1317 XYZZY
- HDU 1317 POJ 1932 XYZZY 正负环+最长路
- hdu 1317 XYZZY(spfa判环)
- HDU 1317 XYZZY (SPFA 找正环 + Floyd 判连通)
- hdu 1317——XYZZY
- HDU 1317 XYZZY(floyd+bellman_ford判环)
- HDU 1317 POJ 1932 XYZZY
- HDU 1317--XYZZY 【spfa判断正环求最长路径 && floyd求传递闭包】
- hdu 1317 XYZZY (负权回路问题,SPAF实现)
- HDU 1317 XYZZY(spfa负权处理)
- HDU 1317 XYZZY
- hdu 1317 XYZZY【BellmanFord+Floyd】
- hdu-1317-XYZZY-Bellman-Ford判环、Floyd算法
- HDU 1317 XYZZY
- [HDU 1317]XYZZY[SPFA变形][最长路]