【codevs 1557】热浪(SPFA)
来源:互联网 发布:js怎么获取对象的长度 编辑:程序博客网 时间:2024/04/27 03:05
SPFA
include<cstdio>#include<iostream>#include<queue>#include<algorithm>#include<cstring>#include<cmath>using namespace std;queue<int>q;int n,m,tot=0;const int maxn=6200+5;int first[maxn],next[maxn<<1];int dis[maxn];bool exi[maxn];struct edge{ int f,t,v;}es[maxn<<1];void build(int f,int t,int v){ es[++tot]=(edge){f,t,v}; next[tot]=first[f]; first[f]=tot;}bool cmp(edge a,edge b){ return a.v<b.v;}void spfa(int s){ memset(exi,0,sizeof(exi)); memset(dis,63,sizeof(dis)); while(!q.empty()) q.pop(); dis[s]=0; q.push(s); exi[s]=1; while(!q.empty()) { int top=q.front(); q.pop(); exi[top]=0; for(int i=first[top];i;i=next[i]) { if(dis[es[i].t]>dis[top]+es[i].v) { dis[es[i].t]=dis[es[i].f]+es[i].v; if(!exi[es[i].t]) { q.push(es[i].t); exi[es[i].t]=1; } } } }}int main(){ int s,t; int from,to,val; scanf("%d%d%d%d",&n,&m,&s,&t); for(int i=1;i<=m;i++) { scanf("%d%d%d",&from,&to,&val); build(from,to,val); build(to,from,val); } spfa(s); printf("%d\n",dis[t]); return 0;}
阅读全文
0 0
- 【codevs 1557】热浪(SPFA)
- codevs 1557 热浪 SPFA 最短路
- codevs 1557 热浪 SPFA 解题报告
- CODEVS 1557 热浪
- codevs 1557 热浪
- Loi_Cunese|CODEVS|1557|热浪
- Codevs 1557 热浪
- codevs 1557 热浪
- 【codevs 1557】热浪
- 【codevs 1557】热浪(Dijkstra)
- Codevs 1557 热浪 解题报告
- SPFA+SLF(链式队列) Codevs p1557热浪
- 【codevs 1557】热浪的不同姿势
- 最短路经典例题 codevs 1557 热浪
- codevs 1557 热浪(最短路【模板】)
- 最短路算法 codevs 1557 热浪
- 【图论】CODE[VS] 1557 热浪 (SPFA模板)
- 【CS 1557】热浪(Bellman_ford、Spfa、Spfa-slf三杀)
- 逆向实战之计算管家会员破解
- 20170809工作记账流水(2017-08-09 10:00)
- 每日一题——排序(从1-n连续的数进行排序)
- Coding心得
- 400. Nth Digit
- 【codevs 1557】热浪(SPFA)
- 深度学习网络搭建与编程范式
- 因为方言问题使得hibernate在eclipse上建表失败
- HashMap常见面试问题总结
- 关于JAVA接口
- 覆盖和多态的条件
- git操作
- Linux的特点
- 判断素数的算法