当前位置: 首页 > news >正文

hdu 3631(floyd思想的运用)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3631

思路:由于只能用标记的点去更新,并且又要求任意两点之间的最短距离,显然floyd是最合适的。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<vector>
 7 using namespace std;
 8 #define MAXN 333
 9 #define inf 1<<30
10 bool mark[MAXN];
11 int map[MAXN][MAXN];
12 int N,M,Q;
13 
14 void Floyd(int x){
15     for(int i=0;i<N;i++){
16         for(int j=0;j<N;j++){
17             if(map[i][x]!=inf&&map[x][j]!=inf&&map[i][j]>map[i][x]+map[x][j]){
18                 map[i][j]=map[i][x]+map[x][j];
19             }
20         }
21     }
22 }
23 
24 
25 int main(){
26     int _case=1,u,v,w,x,y,flag;
27     while(~scanf("%d%d%d",&N,&M,&Q),(N+M+Q)){
28         if(_case>1)puts("");
29         for(int i=0;i<N;i++){
30             map[i][i]=0;
31             for(int j=i+1;j<N;j++){
32                 map[i][j]=map[j][i]=inf;
33             }
34         }
35         for(int i=1;i<=M;i++){
36             scanf("%d%d%d",&u,&v,&w);
37             if(w<map[u][v])map[u][v]=w;
38         }
39         memset(mark,false,sizeof(mark));
40         printf("Case %d:\n",_case++);
41         while(Q--){
42             scanf("%d",&flag);
43             if(flag==0){
44                 scanf("%d",&x);
45                 if(mark[x]){ printf("ERROR! At point %d\n",x);continue; }
46                 mark[x]=true;
47                 Floyd(x);
48             }else {
49                 scanf("%d%d",&x,&y);
50                 if(!mark[x]||!mark[y]){
51                     printf("ERROR! At path %d to %d\n",x,y);
52                 }else if(map[x][y]<inf){
53                     printf("%d\n",map[x][y]);
54                 }else 
55                     puts("No such path");
56             }
57         }
58     }
59     return 0;
60 }
View Code

 

相关文章:

  • 用MDT 2012为企业部署windows 7(七)--创建标准操作系统部署任务序列
  • 自动化运维之 Kerberos 账号信息管理平台
  • POJ 1226 Substrings 解题报告
  • 集合元素并查集
  • PostgreSQL的总体架构
  • Web 应用程序项目 XXXX 已配置为使用 IIS。 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。...
  • 030、 Linux 查看CPU信息、机器型号等硬件信息
  • 用Shell脚本监控服务器并发邮件报警
  • HANA学习笔记1-搭建HANA学习环境
  • linux何检查一个目录是否为空目录
  • 网站安全那些事
  • Gartner:数据审计与保护的9个关键能力
  • Mybatis 在CS程序中的应用
  • 支持高并发的IIS Web服务器常用设置
  • ThinkPHP框架中添加404错误页面以及访问安全
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • HTTP中的ETag在移动客户端的应用
  • IDEA常用插件整理
  • js递归,无限分级树形折叠菜单
  • PAT A1050
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React中的“虫洞”——Context
  • windows下如何用phpstorm同步测试服务器
  • 大快搜索数据爬虫技术实例安装教学篇
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 两列自适应布局方案整理
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • FaaS 的简单实践
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #etcd#安装时出错
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (分类)KNN算法- 参数调优
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (力扣)1314.矩阵区域和
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 物件導向與老子思想 (OO)
  • .net Application的目录
  • .NET CF命令行调试器MDbg入门(一)
  • .Net Redis的秒杀Dome和异步执行
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net访问oracle数据库性能问题
  • /dev/sda2 is mounted; will not make a filesystem here!
  • /etc/sudoer文件配置简析
  • ::前边啥也没有
  • :如何用SQL脚本保存存储过程返回的结果集
  • @vue/cli 3.x+引入jQuery
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [Android]使用Android打包Unity工程
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [Angularjs]asp.net mvc+angularjs+web api单页应用