POJ 3628(最短路)
来源:互联网 发布:怎样做软件开发 编辑:程序博客网 时间:2024/06/05 05:12
题目连接:http://poj.org/problem?id=3268
AC代码:
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>using namespace std;const int M=1e6+100;const int N=1e3+100;const int INF=0x3f3f3f3f;typedef long long ll;int n,m;int map1[N][N];int map2[N][N];int dis1[N];int dis2[N];//dis数组记录节点x到其他点的最短路长度void dijkstra(int ma[][N],int dis[],int x){ int u; int vis[N]={0};//记录某点是否被处理过 fill(dis,dis+N,INF); dis[x]=0; for(int i=1;i<=n;i++){ int mi=INF; for(int j=1;j<=n;j++){ if(!vis[j]&&mi>dis[j]){ mi=dis[j]; u=j; } } vis[u]=1; for(int j=1;j<=n;j++){ if(!vis[j]&&dis[j]>dis[u]+ma[u][j]) dis[j]=dis[u]+ma[u][j]; } }}int main(){ int a,b,t,x; int ans=0; cin>>n>>m>>x; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ map1[i][j]=INF; map2[i][j]=INF; } } for(int i=1;i<=m;i++){ scanf("%d%d%d",&a,&b,&t); map1[a][b]=t; map2[b][a]=t; } dijkstra(map1,dis1,x); dijkstra(map2,dis2,x); for(int i=1;i<=n;i++){ if(ans<dis1[i]+dis2[i]) ans=dis1[i]+dis2[i]; } printf("%d\n",ans); return 0;}
注:参考别人代码
阅读全文
0 0
- POJ 3628(最短路)
- poj 1860(最短路)
- poj 1125(最短路)
- POJ 1125(最短路)
- POJ-1860(最短路)
- 【POJ】3463 Sightseeing 最短路+比最短路大一的路(最短路 or 最短路+DP)
- poj 3259(bellman 最短路)
- poj 2240(bellman 最短路)
- poj 1502 最短路(类似于1125)
- POJ 2457 Part Acquisition(最短路)
- POJ 3072 Robot (最短路)
- poj 2677 Tour (最短路)
- poj 2253 Frogger (最短路Floyd)
- poj 1860 -- Currency Exchange(最短路)
- poj 1125 -- Stockbroker Grapevine (最短路)
- poj 1603 Risk(最短路)
- POJ 1724 ROADS(bfs最短路)
- POJ 1861 Network (最短路)
- python:单引号,双引号和三引号
- Linux2文件目录操作4-文件查找与定位命令
- Servlet处理登陆响应参考代码
- spark简介
- Hexo快速部署教程
- POJ 3628(最短路)
- 安卓-短信助手
- 8.22模拟赛
- ACM小技巧
- Eclipse中文件定位插件、SVN插件
- python-----读取Pickle文件信息计算出与当前的时间间隔
- 树链剖分
- 如何修改oracle数据库字符集
- [转]写给Krpano小白们的最最最入门级教程(三)