POJ 3159 松弛操作 差分约束 SPFA
来源:互联网 发布:工信部域名备案查询 编辑:程序博客网 时间:2024/05/10 01:20
这个题的数据比较奇葩 SPFA里必须拿栈才能过,队列就过不了,而且在建图的时候最好不要拿vector也好像会超时,比较尴尬。
#include<cstdio>#include<cstring>#include<algorithm>#include<stack>#include<vector>#include<queue>using namespace std;const int maxn=150010;const int INF=0x3f3f3f3f;int n,m,u,v,w,d[30010],vis[30010],Q[30010];struct Edge{ int v,w,nexts;}edge[maxn];int head[30010];int cnt;void init(){ cnt=0; memset(head,-1,sizeof(head)); memset(vis,0,sizeof(vis)); memset(d,0,sizeof(d)); memset(Q,0,sizeof(Q));}void add_edge(int u,int v,int w){ Edge p; p.v=v; p.w=w; p.nexts=head[u]; edge[cnt]=p; head[u]=cnt++;}bool SPFA(int start,int end){ int top=0; for(int i=1;i<=n;i++) { if(i==start) { Q[top++]=i; vis[i]=true; d[i]=0; } else { vis[i]=false; d[i]=INF; } } while(top) { int u=Q[--top]; vis[u]=0; for(int i=head[u];i!=-1;i=edge[i].nexts) { int v=edge[i].v; int w=edge[i].w; if(d[v]>d[u]+w) { d[v]=d[u]+w; if(!vis[v]) { vis[v]=1; Q[top++]=v; } } } } return true;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { init(); for(int i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); add_edge(u,v,w); } SPFA(1,n); printf("%d\n",d[n]); } return 0;}
0 0
- POJ 3159 松弛操作 差分约束 SPFA
- POJ 3159 Candies 差分约束+spfa
- poj 3159 Candies 差分约束 + spfa
- POJ 3159 差分约束系统+spfa
- POJ 3159 Candies【差分约束+SPFA】
- poj 3159 差分约束 + SPFA + 栈
- POJ 3159 (差分约束+spfa)
- POJ 3159 差分约束+SPFA
- Poj 3159 (差分约束系统,SPFA+栈,Dij+heap)
- POJ - 3159 不卡建图,几乎赤果果的差分约束+SPFA..
- POJ 3159 Candies [差分约束系统 SPFA+STACK]
- POJ 3159 Candies 差分约束 spfa+栈+邻接表
- poj 3159 Candies(差分约束 spfa stack实现)
- POJ 3159 Candies(SPFA+栈)差分约束
- POJ 3159 Candies(spfa最短路,差分约束)
- POJ 3159 Candies(差分约束基础题,栈式SPFA)
- POJ 3159 Candies(差分约束+SPFA )
- 【poj 3159】Candies 差分约束+spfa(stack)
- BZOJ 1192 [HNOI2006]鬼谷子的钱袋
- ConcurrentHashMap分析
- 基于对话框的绘图
- iOS中UIScrollViewDelegate使用总结
- Java 多线程实现死锁场景 (r)
- POJ 3159 松弛操作 差分约束 SPFA
- 使用SortedMap对HashMap排序
- 【小项目】简单天气预报项目的实现与流程
- 【UIDynamic例子】挂起的方块
- Java内部类的作用
- iOS持续集成,让你开发不在困难
- Java 多线程 join和interrupt 方法 (r)
- rails下正确使用国外yahoo的第三方登录插件
- CSRF 攻击的应对之道