poj 1125 Stockbroker Grapevine 【最短路&&克鲁斯卡尔】
2015-11-13 12:45
337 查看
题目:
http://poj.org/problem?id=1125
分析:
给你n个点,求从哪一点到任意一点的时间最短。
代码:
http://poj.org/problem?id=1125
分析:
给你n个点,求从哪一点到任意一点的时间最短。
代码:
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; const int N=110; const int inf=0x3f3f3f3f; int map ; int dij(int v,int n) { int min,id,i,j; int dis ,vis ; for(i=1;i<=n;i++) { dis[i]=map[v][i]; vis[i]=0; } vis[v]=1; for(i=1;i<n;i++) { min=inf; id=0; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]<min) min=dis[id=j]; } if(!id) break; vis[id]=1; for(j=1;j<=n;j++) { if(!vis[j]&&(min+map[id][j])<dis[j]) dis[j]=min+map[id][j]; } } return min; } int main() { int n,m; int min,id,stime,x; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) map[i][j]=inf; for(int i=1;i<=n;i++) { scanf("%d",&m); for(int j=1;j<=m;j++) { scanf("%d",&x); scanf("%d",&map[i][x]); } } min=dij(1,n); id=1; for(int i=2;i<=n;i++) { stime=dij(i,n); if(stime<min) { min=stime; id=i; } } printf("%d %d\n",id,min); } return 0; }
相关文章推荐
- 【C语言】 缓冲区问题 循环使用getchar scanf会受到换行符'\n'的干扰
- NSIS脚本入门和进阶方法
- powershell excel 导入 sqlserver
- VC下配置使用OTL
- UITableView的折叠效果
- Android中Bitmap和Drawable
- linux学习基础---bash命令行基本操作
- 【STL】序列式容器细节
- onCreate()的参数Bundle saveInstanceState
- [Logmnr]对重做日志进行数据挖掘
- JAVA多态与异常处理课后作业
- 关于session cookie的简单介绍及 session会话的简单运用
- count、find、binary_search、lower_bound、upper_bound和equal_range的区别
- 信息图:Python异常速查
- 字符编码小结
- coalesce函数 类似于nvl
- Linux文件目录权限浅谈
- 07-渲染流程-1-流程
- 自己动手制作纯净版的WinPE
- AsnycTask更新主线程UI基本代码