hdu 1595
来源:互联网 发布:java的那些事 知乎 编辑:程序博客网 时间:2024/06/01 23:03
OJ
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define PB(x)(scanf("%I64d",&x))#define PRB(x)(printf("%I64d\n",(x)))typedef __int64 LL;#define N 1505#define M 105#define Mod 1000#define Inf 0x3f3f3f3fint maps[N][N];vector<int> G[N];int n,m;queue<int> GG;int ar[N];int pre[N];int dist[N];vector<int> g;void reinit(){for(int i=0;i<=n;i++)if(!G[i].empty()) G[i].clear();memset(maps,-1,sizeof(maps));}void bfs(){while(!GG.empty()) GG.pop();memset(ar,0,sizeof(ar)); memset(pre,-1,sizeof(pre));for(int i=1;i<=n;i++)dist[i] = Inf;dist[1] = 0;ar[1] = 1;GG.push(1);while(!GG.empty()){int t = GG.front();GG.pop();for(int j=0;j<(int)G[t].size();j++){int s = G[t][j];if(dist[s]>dist[t]+maps[t][s]){dist[s] = dist[t] +maps[t][s];pre[s] = t;if(!ar[s]){ar[s] = 1;GG.push(s);}}}ar[t] = 0;}g.clear();int t=n;while(true){g.push_back(t);if(pre[t]==-1) break;t = pre[t];}}int work(){while(!GG.empty()) GG.pop();memset(ar,0,sizeof(ar));for(int i=1;i<=n;i++)dist[i] = Inf;dist[1] = 0;ar[1] = 1;GG.push(1);while(!GG.empty()){int t = GG.front();GG.pop();for(int j=0;j<(int)G[t].size();j++){int s = G[t][j];if(maps[t][s] !=Inf){if(dist[s]>dist[t]+maps[t][s]){dist[s] = dist[t]+maps[t][s];if(!ar[s]){ar[s] = 1;GG.push(s);}}}}ar[t] = 0;}return dist[n];}void init(){while(scanf("%d%d",&n,&m)!=EOF){reinit();for(int i=0;i<m;i++){int x,y,c;PT(x,y);PF(c);maps[x][y] = c;maps[y][x] = c;G[x].push_back(y);G[y].push_back(x);}bfs();int t = n;int mins = 0;while(true)//这里刚开始计算少删了一条边,一直不知道哪里错了,WA不计数,无奈一天,只好对着别人代码一一换格式{int k = maps[pre[t]][t];maps[pre[t]][t] = Inf;maps[t][pre[t]] = Inf; work();if(mins<dist[n]) mins = dist[n];maps[t][pre[t]] = k;maps[pre[t]][t] = k;if(pre[t] == 1) break;t = pre[t];}PR(mins);}return ;}int main(){init();return 0;}
- hdu 1595
- HDU 1595
- hdu 1595 最短路
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- android StartActivityForResult()方法详解
- Windows进化史
- 大整数加法
- hdu 1272 差点淹死!!!!!!!
- RTTI、虚函数和虚基类的实现方式、开销分析及使用指导
- hdu 1595
- 不用+、-、×、÷做加法
- jQuery–20个的jQuery效果
- 2012.7.24
- Meta标签补充
- LINUX未来的发展前景
- Core C问题问答
- UIScrollView的作用原理,实现scrollView中touch事件作用子视图
- 关于java中的参数传递