poj3268牛的来回最短时(dijkstra)
来源:互联网 发布:宁德catl知乎 编辑:程序博客网 时间:2024/05/16 01:51
题意:有分别来自 N 个农场的 N 头牛去农场 X 嗨皮,农场间由 M 条有向路径连接。每头牛来回都挑最短的路走,求它们中走的路的最大长度?
(1 ≤ X ≤ N).
(1 ≤ M ≤ 100,000)
floyd超时,dir遍历所有点N*N2超时
思路:来个反向图,全部以x为起点,两次dir即可。(正向图s起点x终点即反向图x起点s终点)
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;typedef long long LL;#define N 1000+8int mp1[N][N],mp2[N][N],dist1[N],dist2[N],vis[N],n;void dir(int s,int mp[][N],int dist[]){ int i,j,k; for(i=1; i<=n; i++) { vis[i]=0; dist[i]=mp[s][i]; } vis[s]=1; for(j=1; j<n; j++) { int min1=1e9; for(i=1; i<=n; i++) { if(!vis[i]&&dist[i]<min1) { min1=dist[i]; k=i; } } vis[k]=1; for(i=1; i<=n; i++) { if(!vis[i]) dist[i]=min(dist[i],dist[k]+mp[k][i]); } }}int main(){ int x,m,i,j,a,b,c; scanf("%d%d%d",&n,&m,&x); for(i=1; i<=n; i++) for(j=1; j<=n; j++) { if(i==j) mp1[i][j]=mp2[i][j]=0; else mp1[i][j]=mp2[i][j]=1e9; } while(m--) { scanf("%d%d%d",&a,&b,&c); mp1[a][b]=c; mp2[b][a]=c; } dir(x,mp1,dist1); dir(x,mp2,dist2); int max1=0; for(i=1; i<=n; i++) { if(i==x) continue; max1=max(max1,dist1[i]+dist2[i]); } printf("%d\n",max1); return 0;}
阅读全文
1 0
- poj3268牛的来回最短时(dijkstra)
- POJ3268 牛的最长来回时间(单源最短路径)
- POJ3268基本的Dijkstra
- POJ3268(Dijkstra)
- poj3268(最短路,dijkstra)
- poj3268(dijkstra算法变形)
- poj3268--dijkstra算法的灵活应用
- poj3268(单源最短路,dijkstra算法)
- 最短路 dijkstra---poj3268
- 【高手回避】poj3268,一道很水的dijkstra算法题
- poj3268~Silver Cow Party(dijkstra+路径反转)
- POJ3268 Silver Cow Party 【Dijkstra】
- POJ3268 Silver Cow Party(dijkstra)
- poj3268 Silver Cow Party (dijkstra)
- POJ 3268 Silver Cow Party (dijkstra来回最短路)
- Dijkstra POJ3268 Silver Cow Party解题报告
- [spfa/dijkstra]poj3268 Silver Cow Party
- POJ3268 Silver Cow Party(dijkstra,spfa)
- 函数
- 阿里巴巴js面试题3
- Python日志8/5ri
- 2017.08.06【NOIP提高组】模拟赛B组总结
- ObjectOutputStream和ObjectInputStream的简单使用
- poj3268牛的来回最短时(dijkstra)
- aiml语言获取时间,日期
- IPython使用技巧
- Python中常用的字符串内建函数
- 【笔记】决策树
- 快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
- MySQLdb库和pymysql库的区别
- 数据结构顺序表
- 初始化脚本脚本及自动编译安装apache