摘要: 原来一直没去学spfa,感觉只一个Dij已经很够用了,昨天翻了一下最短路,如果路径中存在负权的话,Dij也只能素手无策,这时spfa就大显身手了。。实现过程:我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。我们采取的方法是松弛:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点放入队尾。这样不断从队列中取出结点来进行松弛操作,直至队列空为止。这道题很明显的最短路,分别用两个版本写了下。spfa:View Code 1 # i 阅读全文
posted @ 2011-07-22 08:33 奋斗青春 阅读(657) 评论(0) 推荐(1) 编辑
摘要: 一道很简单的树形DP,果断不解释,直接贴代码:# include<stdio.h># include<string.h># define N 6005struct node{ int from,to,next;}edge[2*N];int head[N],tol,visit[N],val[N],degree[N],dp[N][3];void add(int a,int b){ edge[tol].from=a;edge[tol].to=b;edge[tol].next=head[a];head[a]=tol++;}int max(int a,int b){ return 阅读全文
posted @ 2011-07-22 08:24 奋斗青春 阅读(796) 评论(0) 推荐(0) 编辑