poj1502 MPI Maelstrom
来源:互联网 发布:suse12 网络配置 编辑:程序博客网 时间:2024/05/17 23:44
题目:http://poj.org/problem?id=1502
题意:输入第一行为数目,以下为一个下三角矩阵,因为自身之间需要时间为0,所以输入的第一行是从2到1所需要的时间(无向图)。英语伤不起啊
想法:输入是因为有字符又有数字,所以就用一个字符数组来存放。感觉如果一个个转换过来太麻烦,百度了一下发现有atoi这个函数,atoi()会扫描字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。
代码:
#include<iostream>#include<queue>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int INF=0x3f3f3f3f;const int maxn=110;bool vis[maxn];char s[maxn];int dis[maxn],link[maxn][maxn];queue <int> ss;int n,ans;void spfa(){ for(int i=1;i<=n;i++) dis[i]=INF; dis[1]=0; memset(vis,false,sizeof(vis)); vis[1]=true; ss.push(1); while(!ss.empty()){ int x=ss.front(); ss.pop(); vis[x]=false; for(int i=1;i<=n;i++){ if(dis[i]>dis[x]+link[x][i]){ dis[i]=dis[x]+link[x][i]; if(!vis[i]){ ss.push(i); vis[i]=true; } } } }}int main(){ while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) link[i][j]=INF; for(int i=2;i<=n;i++){ for(int j=1;j<i;j++){ scanf("%s",s); if(s[0]!='x') link[i][j]=link[j][i]=atoi(s); } } spfa(); ans=0; for(int i=1;i<=n;i++) ans=max(ans,dis[i]); cout<<ans<<endl; } return 0;}
0 0
- poj1502 - MPI Maelstrom
- poj1502 MPI Maelstrom
- MPI Maelstrom poj1502
- POJ1502 MPI Maelstrom Dijkstra
- POJ1502 MPI Maelstrom
- POJ1502 MPI Maelstrom
- poj1502 MPI Maelstrom 最短路
- POJ1502——MPI Maelstrom
- poj1502 MPI Maelstrom 直接Dijkstra
- MPI Maelstrom - POJ1502最短路
- POJ1502 MPI Maelstrom 基本最短路
- poj1502 MPI Maelstrom 最短路径,dijkstra
- POJ1502 MPI Maelstrom -DIJKSTRA练习系列
- POJ1502 MPI Maelstrom(最短路dijkstra)
- poj1502 MPI Maelstrom(最短路中的最大值)
- poj1502 MPI Maelstrom(最短路)
- POJ1502 MPI Maelstrom(最短路径)
- poj1502-MPI Maelstrom三种方法
- jquery模拟用户单击事件
- 网络异常方面的建议
- C#_为WinForm窗体定义功能快捷键
- 工作记录 - 时间都去哪了 送给迷茫的程序员
- [转]Linux技术进阶示意图
- poj1502 MPI Maelstrom
- Android 从网页中跳转到APP并传递数据
- 题目1073:杨辉三角形
- ZooKeeper入门-单点部署
- PHP数据库操作单例类
- 今天我撞到个奇葩,你说我能不笑吗? 哈哈哈
- http://dongxi.douban.com/article/1056161/
- Android学习之——并发编程:Android进程中的线程
- 向大家请教个问题--怎样获取linux服务器的各个硬盘的大小