非常感谢kuangbin专题啊,这道题一开始模拟邻接表做的,反向边不好处理,邻接矩阵的话舒服多了。

题意:给n头牛和m条有向边,每头牛1~n编号,求所有牛中到x编号去的最短路+回来的最短路的最大值。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std; const int maxn = 1e3 + ;
const int maxm = 1e5 + ;
const int inf = 0x3f3f3f3f;
struct edge{
int s, to, w, next;
} ed[maxm];
int n, m, x;
int mp[maxn][maxn], dis1[maxn], dis2[maxn];
bool vis[maxn];
inline int max( int a, int b ){
return a>b ? a:b;
} inline int min( int a, int b ){
return a<b ? a:b;
} inline int dij(){
//先求了去到x的最短路
memset( vis, , sizeof(vis) );
memset( dis1, inf, sizeof(dis1) );
dis1[x] = ;
for( int i=; i<n; i++ ){
int minid, MIN=inf;
for( int j=; j<=n ;j++ ) if( !vis[j] && MIN>dis1[j] ) MIN = dis1[minid=j];
vis[minid] = ;
for( int j=; j<=n; j++ ) if( !vis[j] ) dis1[j] = min(dis1[j], dis1[minid]+mp[minid][j]);
}
//接下来求回去的最短路
memset( vis, , sizeof(vis) );
memset( dis2, inf, sizeof(dis2) );
dis2[x] = ;
for( int i=; i<n; i++ ){
int minid, MIN = inf;
for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis2[j] ) MIN = dis2[minid=j];
vis[minid] = ;
for( int j=; j<=n; j++ ) if( !vis[j] ) dis2[j] = min( dis2[j], dis2[minid]+mp[j][minid] );
}
//遍历求出res
int res = -inf;
for( int i=; i<=n; i++ ) res = max( dis1[i]+dis2[i], res );
return res;
} int main(){
// freopen("in.txt", "r", stdin);
ios::sync_with_stdio(); //加速cin 和 cout读取速度,但是这样的话就不能使用scanf了
cin.tie();
cout.tie();
cin >> n >> m >> x;
memset( mp, inf, sizeof(mp) );
for( int i=; i<=n; i++ ) mp[i][i] = ;
for( int i=; i<m; i++ ){
int u, v, w;
cin >> u >> v >> w;
mp[u][v] = w;
}
cout << dij() << endl; return ;
}

最新文章

  1. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 面向全国标准省市县行政数据基础之上的组织机构管理
  2. ajaxfileupload asp.net 的简单使用
  3. EventBus使用详解(一)
  4. 安卓手机上运行 PC-E500 程序
  5. Python入门笔记(5):对象
  6. CSS 兼容 总结
  7. [CSS]三层嵌套的滑动门
  8. iOS学习笔记--OC系列(1)
  9. javascript——可以判断值的类型的函数
  10. 用SQL替换最后一个指定字符后面的所有字符
  11. OC 数组
  12. Asp.net 获取图片列表并打包下载
  13. 基于ZKWeb + Angular 4.0的开源管理后台Demo
  14. nodejs之express4x
  15. emacs 配置
  16. hive字段名、注释中文显示问号
  17. python--异常捕获
  18. 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表、Applications表、 Mapplings表
  19. PHP 正则表达式---匹配模式
  20. 背水一战 Windows 10 (48) - 控件(集合类): FlipView

热门文章

  1. haproxy转发真实IP给web
  2. log4j Logger 使用简介
  3. readiness与liveness
  4. python 必选参数、默认参数、可变参数和、关键字参数
  5. Content-type&quot;是&quot;application/json的作用
  6. CSS选择符、伪类、层叠
  7. SpringBoot+Vue前后端分离项目,maven package自动打包整合
  8. docker安装指定版本nexus3
  9. mysql慢查询及查询优化
  10. [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?