[floyd]UVa821 - Page Hopping
2015-09-10 22:16
477 查看
就是一道简单的floyd的题
1A
还是不借助题解独立A题来的酸爽!
1A
还是不借助题解独立A题来的酸爽!
#include<bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; int M; int dp[110][110]; bool vis[110]; void floyd(){ for(int k=1;k<=M;k++) for(int i=1;i<=M;i++) for(int j=1;j<=M;j++){ dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]); } } void init() { for(int i=0;i<=M;i++) for(int j=0;j<=M;j++) if(i==j) dp[i][j]=0; } int main() { int a,b,kase=0; while(scanf("%d%d",&a,&b)&&(a,b)){ M=0; memset(dp,INF,sizeof(dp)); memset(vis,0,sizeof(vis)); if(a==0&&b==0) break; dp[a][b]=1; M=max(a,max(M,b)); vis[a]=vis[b]=1; while(scanf("%d%d",&a,&b)&&(a,b)){ if(a==0&&b==0) break; dp[a][b]=1; M=max(a,max(M,b)); vis[a]=vis[b]=1; } init(); floyd(); int sum=0; for(int i=1;i<=M;i++) for(int j=1;j<=M;j++) if(dp[i][j]!=INF) sum+=dp[i][j]; int num=0; for(int i=1;i<=M;i++) if(vis[i]) num++; num = num*(num-1); // printf("%d\n",num); printf("Case %d: average length between pages = %.3lf clicks\n",++kase,(double)sum/(double)num); } return 0; }
相关文章推荐
- centos6.7 32位系统安装wine
- maven项目如何生成war文件并部署到tomcat
- Linux中文乱码问题
- Linux之V4L2基础编程
- C#模拟百度登录并到指定网站评论回帖(一)
- Hadoop系列之四:MapReduce进阶
- apache虚拟机的配置
- CentOS7中关闭selinux
- tomcat启动报错java.lang.UnsatisfiedLinkError: D:\...Can't load AMD 64-bit .dll on a IA 32-bit' platform
- 在VS2013下配置opencv-2.4.11
- 阿里云-ECS-apache-tomcat-安装-linux
- 学习linux
- 阿里云-ECS-nginx反向代理-安装
- Linux上使用SMART检测硬盘
- Linux V4L2 摄像头视频采集
- 在CentOS 6.3中安装与配置JDK-7
- Shell脚本-良好的习惯
- [转]Linux上程序执行的入口--Main
- openfire创建插件
- System中的一些属性(Properties属性)如何获取系统属性和指定系统属性