POJ 3268 Dijkstra+priority_queue或SPFA
思路:正向建边,一遍Dijkstra,反向建边,再一遍Dijkstra。ans加在一起输出最大值。
(SPFA也行……)
// by SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1005
int n,m,X,tot=0,maxx=0,first[N],v[N*N],w[N*N],next[N*N],xx[N*N],yy[N*N],zz[N*N],d[N],ans[N];
struct node{int weight,now;}jy;
void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
bool operator < (node a,node b){return a.weight>b.weight;}
void Dijkstra(int x){
priority_queue<node>pq;
bool vis[N];memset(vis,0,sizeof(vis)),memset(d,0x3f,sizeof(d));
jy.weight=0,jy.now=x,d[x]=0;
pq.push(jy);
while(!pq.empty()){
node temp=pq.top();pq.pop();
if(vis[temp.now])continue;
vis[temp.now]=1;
for(int i=first[temp.now];~i;i=next[i])
if(!vis[v[i]]&&d[v[i]]>d[temp.now]+w[i]){
d[v[i]]=d[temp.now]+w[i];
jy.now=v[i];
jy.weight=temp.weight+w[i];
pq.push(jy);
}
}
for(int i=1;i<=n;i++)ans[i]+=d[i];
}
void spfa(int x){
bool vis[N];memset(vis,0,sizeof(vis)),memset(d,0x3f,sizeof(d));
queue<int>q;
vis[x]=1,d[x]=0,q.push(x);
while(!q.empty()){
int temp=q.front();q.pop(),vis[temp]=0;
for(int i=first[temp];~i;i=next[i])
if(d[temp]+w[i]<d[v[i]]){
d[v[i]]=d[temp]+w[i];
if(!vis[v[i]])q.push(v[i]),vis[v[i]]=1;
}
}
for(int i=1;i<=n;i++)ans[i]+=d[i];
}
int main()
{
scanf("%d%d%d",&n,&m,&X);
memset(first,-1,sizeof(first));
for(int i=1;i<=m;i++)scanf("%d%d%d",&xx[i],&yy[i],&zz[i]),add(xx[i],yy[i],zz[i]);
Dijkstra(X);
memset(first,-1,sizeof(first)),tot=0;
for(int i=1;i<=m;i++)add(yy[i],xx[i],zz[i]);
Dijkstra(X);
for(int i=1;i<=n;i++)maxx=max(maxx,ans[i]);
printf("%d",maxx);
}
POJ 3268 Dijkstra+priority_queue或SPFA的更多相关文章
- POJ 3268 (dijkstra变形)
题目链接 :http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveni ...
- POJ - 3268 Silver Cow Party SPFA+SLF优化 单源起点终点最短路
Silver Cow Party One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to ...
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbe ...
- POJ 3268——Silver Cow Party——————【最短路、Dijkstra、反向建图】
Silver Cow Party Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- poj 2378 (dijkstra)
http://poj.org/problem?id=2387 一个dijkstra的模板题 #include <stdio.h> #include <string.h> #de ...
- 【最短路算法】Dijkstra+heap和SPFA的区别
单源最短路问题(SSSP)常用的算法有Dijkstra,Bellman-Ford,这两个算法进行优化,就有了Dijkstra+heap.SPFA(Shortest Path Faster Algori ...
- POJ 3268 Silver Cow Party (最短路径)
POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...
- 最短路径问题---Floyed(弗洛伊德算法),dijkstra算法,SPFA算法
在NOIP比赛中,如果出图论题最短路径应该是个常考点. 求解最短路径常用的算法有:Floyed算法(O(n^3)的暴力算法,在比赛中大概能过三十分) dijkstra算法 (堆优化之后是O(MlogE ...
随机推荐
- ubuntu安装之后root用户配置
安装ubuntu之后发现不切换到root显示:su: Authentication failure 需要进行一下操作 表示成功切换到root用户
- 数据库 The Network Adapter could not establish the connection解决方案
连接数据库 注意 url ip地址换的时候 oracle 里的listener.ora thnsnames.ora也要随之变化 重启数据库 不然可能会报出 java.sql.SQLException: ...
- Web api 测试 工具WebApiTestClient
1.打开Nuget 安装 WebApiTestClient 2.在HelpPageConfig.cs 里面添加这段文字 config.SetDocumentationProvider(new Xml ...
- H5自带进度条&滑块
一.H5自带进度条 <div id="d1"> <p id="pgv">进度:0%</p> <progress id= ...
- Vue.js 2.x Development Build With Hot Reloading For External Server (using Webpack template)
This article assuming you created your project using webpack template. vue init webpack <PROJECT_ ...
- 性能优化实战-join与where条件执行顺序
昨天经历了一场非常痛苦的性能调优过程,但是收获也是刻骨铭心的,感觉对sql引擎的原理有了进一步认识. 问题起源于测试人员测一个多条件检索的性能时,发现按某个条件查询会特别慢.对应的sql语句简化为: ...
- SQL CASE WHEN语句性能优化
背景:性能应该是功能的一个重要参考,特别是在大数据的背景之下!写SQL语句时如果仅考虑业务逻辑,而不去考虑语句效率问题,有可能导致严重的效率问题,导致功能不可用或者资源消耗过大.其中的一种情况是,处理 ...
- 用于构建 RESTful Web 服务的多层架构
作者:Bruce Sun, Java 架构师, IBM 出处:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ 用于构建 RESTfu ...
- Extjs win
//创建window var win = Ext.create("Ext.window.Window", { id: "myWin", title: " ...
- Ansible学习记录四:单命令测试
0.Ansible的group支持all.通配符(*).IP地址 1.查看Ansible的版本 $ ansbile --version [root@test ~]# ansible --versi ...