[kuangbin带你飞]专题四 最短路练习 -F
2016-12-14 11:29
351 查看
http://poj.org/problem?id=3259
题意:
有的边是负数,问从一点出发能不能用小于0的时间回去tip:
路是双向,虫洞单向,其他模板。。。要气死了。。。。双向着了1h错误#include <cstdio> #include <iostream> #include <cstring> #include <queue> using namespace std; queue<int>q; const int maxm = 2600; const int maxn = 600; bool inq[maxn*2]; int n,m,w; int head[maxn*2],tot,dis[maxn*2],num[maxn*2]; struct node{ int v,t,next; }edges[maxm*50]; void add(int u,int v,int t){ edges[tot].v = v;edges[tot].t = t;edges[tot].next = head[u];head[u] = tot++; } void init(){ tot = 0; while(!q.empty()) q.pop(); memset(head,-1,sizeof(head)); memset(inq,false,sizeof(inq)); memset(num,0,sizeof(num)); scanf("%d%d%d",&n,&m,&w); for(int i = 1 ; i <= n ; i++) dis[i] = 1<<30; for(int i = 0; i < m ; i++){ int u,v,t; scanf("%d%d%d",&u,&v,&t); add(u,v,t); add(v,u,t); } for(int i = 0 ; i < w ; i++){ int u,v,t; scanf("%d%d%d",&u,&v,&t); add(u,v,-t); } } bool spfa(){ q.push(1); dis[1] =0; inq[1] = true; num[1]++; while(!q.empty()){ int tmp = q.front(); q.pop(); for(int k = head[tmp];k!=-1;k = edges[k].next){ if(dis[edges[k].v] > dis[tmp]+edges[k].t){ dis[edges[k].v] = dis[tmp]+edges[k].t; if(dis[1] < 0) return true; if(!inq[edges[k].v]){ inq[edges[k].v]=true; q.push(edges[k].v); num[edges[k].v]++; if(num[edges[k].v] > n-1) return true; } } } inq[tmp] = false; } if(dis[1] < 0 ) return true; return false; } int main(){ int T; scanf("%d",&T); while(T--){ init(); if(spfa()) printf("YES\n"); else printf("NO\n"); } }
相关文章推荐
- MyBatis映射文件的resultMap一对一一对多关联
- 你必须收藏的 Github 技巧
- IOS倒计时设置UIButton标题title的抖动问题
- Hibernate中对于主键自增策略的Annotation
- 文件上传的三种方法 1servlet方式
- WebView加载本地Html文件并实现点击效果
- eclipse报Access restriction: The type 'BASE64Decoder' is not API处理方法
- JAVA设计模式之单例模式
- Android Studio多工程引用同一个library项目配置方法
- 层次聚类算法
- Laravel框架详解 CURD
- 高通平台:处理diag端口发出的命令
- FastReport给模板变量赋值
- C++用Dijkstra(迪杰斯特拉)算法求最短路径
- An internal error occurred during: "reload maven project". java.lang.NullPointerExceptio解决方案(最优方案)
- 使用Idhttp.get('') 造成假死(堵塞),请问线程idhttp怎么才能做到不出错?
- VMware Fusion 8.5 - 完美实现多系统,让mac用户也能玩Windows
- Android之Observer和Observable
- 由I18n静态代码测试说开去
- 如何分析JVM 永久代内存溢出java.lang.OutOfMemoryError: PermGen space