poj3268
来源:互联网 发布:淘宝店铺装修视频2016 编辑:程序博客网 时间:2024/06/01 08:14
spfa。。。。其实最好用floyed,最简单,只是很久没写spfa了,练习一下
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <cmath>using namespace std;int n , m , k , all;const int M = 1e5;int pre[M + 10] , other[M + 10] , last[M + 10] , cost[M + 10] , seq[M + 10];int dis[M + 10] , Inque[M + 10];void build(int x , int y , int z){ pre[++all] = last[x]; last[x] = all; other[all] = y; cost[all] = z;}int spfa(int s , int x){ memset(Inque , 0 , sizeof(Inque)); int head , tail , now , ed , dr; head = 1 , tail = 0; seq[++tail] = s; for(int i = 1 ; i <= n ; i++) dis[i] = 1 << 30; dis[s] = 0; Inque[s] = 1; while(head <= tail){ now = seq[head]; ed = last[now]; Inque[now] = 0; while(ed != -1){ dr = other[ed]; if(dis[now] + cost[ed] < dis[dr]){ dis[dr] = dis[now] + cost[ed]; if(!Inque[dr]){ Inque[dr] = 1; seq[++tail] = dr; } } ed = pre[ed]; } head++; } return dis[x];}int main(){ while(~scanf("%d %d %d",&n , &m , &k)){ memset(last , -1 , sizeof(last)); all = -1; for(int i = 1 ; i <= m ; i++){ int a , b , c; scanf("%d %d %d",&a , &b , &c); build(a , b , c); } int ans = 0; for(int i = 1 ; i <= n ; i++){ int tmp = 0; tmp += spfa(i,k); tmp += spfa(k,i); if(ans < tmp) ans = tmp; } printf("%d\n",ans); } return 0;}
0 0
- poj3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268---spfa
- POJ3268 SPFA
- Web前端复习——Javasvript学习(面向对象)
- CRF条件随机场----中文分词
- 基于隐马尔科夫模型文本相似度问题研究
- layer 弹出框再弹出框点击确认刷新父亲弹出框
- 多域名证书的签名和自签名流程
- poj3268
- 【笔记】JDK,Tomcat,MySQL@ubuntu安装
- Java源码集合类TreeMap学习1——数据结构4平衡二叉树插入一个元素的递归算法
- Spring Boot配置文件-多环境配置
- MyISAM和InnoDB的主要区别和应用场景
- 本地地址映射远程地址工具ngrok
- 编写一个简单的控制台通讯录
- 未来生活进行时: 畅想未来新兴技术40年——百大趋势性技术汇总(下)
- Jquery 当当网