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

洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 乱搞

题目描述

现在是晚餐时间,而母牛们在外面分散的牧场中。 农民约翰按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛)。 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可能没有母牛。 每个牧场由一条条道路和一个或多个牧场连接(可能包括自己)。 有时,两个牧场(可能是字母相同的)之间会有超过一条道路相连。 至少有一个牧场和谷仓之间有道路连接。 因此,所有的母牛最后都能到达谷仓,并且母牛总是走最短的路径。 当然,母牛能向着任意一方向前进,并且她们以相同的速度前进。 牧场被标记为'a'..'z'和'A'..'Y',在用大写字母表示的牧场中有一只母牛,小写字母中则没有。 谷仓的标记是'Z',注意没有母牛在谷仓中。

注意'm'和'M'不是同一个牧场 否则错误 上面的意思是说:输入数据中可能会同时存在M,m(郁闷ing)(PS:表郁闷…告诉我set of咋用就不郁闷了…),比如

M a a m m z

输入输出格式

输入格式:

 

第 1 行: 整数 P(1<= P<=10000),表示连接牧场(谷仓)的道路的数目。

第 2 ..P+1行: 用空格分开的两个字母和一个整数:

被道路连接牧场的标记和道路的长度(1<=长度<=1000)。

 

输出格式:

 

单独的一行包含二个项目: 最先到达谷仓的母牛所在的牧场的标记,和这只母牛走过的路径的长度。

 

输入输出样例

输入样例#1:
5
A d 6
B d 3
C e 9
d Z 8
e Z 3
输出样例#1:
B 11

说明

翻译来自NOCOW

USACO 2.4

代码

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<vector>
 6 #include<queue>
 7 #include<map>
 8 #define MAXN 30005
 9 #define INF 0x3f3f3f3f
10 using namespace std;
11 
12 map<char,int> m;
13 vector<int> G[MAXN],c[MAXN];
14 int M,dis[MAXN],vis[MAXN];
15 
16 struct cc{int num,d;};
17 cc make(int num,int d){cc a;a.num=num;a.d=d;return a;}
18 struct cmp{bool operator()(cc a,cc b){return a.d>b.d;}};
19 int trans(char a){return m[a];}
20 
21 void init_(){
22     int j=1;    for(char i='a';i<='z';i++,j++){m[i]=j;}
23         j=30;    for(char i='A';i<='Z';i++,j++){m[i]=j;}
24     scanf("%d",&M);
25     
26     for(int i=1;i<=M;i++){
27         char a,b;int w;//格式化输入??? 
28         cin>>a>>b>>w;
29         G[trans(a)].push_back(trans(b));c[trans(a)].push_back(w);
30         G[trans(b)].push_back(trans(a));c[trans(b)].push_back(w);
31     }
32 }
33 
34 
35 void Dijkstra(){
36     priority_queue<cc,vector<cc>,cmp> q;
37     memset(dis,0x3f,sizeof(dis));
38     int s=trans('Z');
39     dis[s]=0;q.push(make(s,0));
40     while(!q.empty()){
41         int x=q.top().num;q.pop();
42         if(vis[x]) continue;vis[x]=1;
43 //        puts("@");
44         for(int i=0;i<G[x].size();i++){
45             int to=G[x][i];
46             if(dis[x]+c[x][i]<dis[to]){
47                 dis[to]=dis[x]+c[x][i];
48                 q.push(make(to,dis[to]));
49             }
50         }
51     }
52 }
53 
54 void work(){
55     Dijkstra();
56     char ans_num;int ans_step=INF;
57     
58     for(char i='A';i<'Z';i++)
59         if(dis[trans(i)]<ans_step)
60             ans_num=i,ans_step=dis[trans(i)];
61 
62     cout<<ans_num<<" "<<ans_step<<endl;
63 }
64 
65 int main(){
66 //    freopen("01.in","r",stdin);//freopen("01.out","w",stdout);
67     
68     init_();
69     work();
70     
71     fclose(stdin);fclose(stdout);return 0;
72 }

回顾了一下 最短路+map 的神奇组合

转载于:https://www.cnblogs.com/radiumlrb/p/6048897.html

相关文章:

  • zookeeper适用场景:zookeeper解决了哪些问题
  • Linux打补丁的一些问题
  • 服务器日志追踪
  • bootstrapValidator.js,最好用的bootstrap表单验证插件
  • 搭建简单FTP服务器以及过程中容易遇到的几个问题(一)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • vs2015密钥 企业版 专业版 (vs.net)
  • MySQL管理与优化(20):备份与恢复
  • mysqldump 备份命令使用中的一些经验总结
  • Mysql开启慢查询日志
  • 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
  • 一套后台管理html模版
  • 关于CXF的FrontEnd和数据绑定方案
  • Android开发之计算器(一)界面设计之activity_main布局文件
  • 再谈Redirect(客户端重定向)和Dispatch(服务器端重定向)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • android图片蒙层
  • CSS中外联样式表代表的含义
  • go append函数以及写入
  • PHP变量
  • Solarized Scheme
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • uni-app项目数字滚动
  • 闭包--闭包作用之保存(一)
  • 大快搜索数据爬虫技术实例安装教学篇
  • 读懂package.json -- 依赖管理
  • 关于List、List?、ListObject的区别
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 数组的操作
  • 算法-图和图算法
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (C语言)共用体union的用法举例
  • (k8s中)docker netty OOM问题记录
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (九十四)函数和二维数组
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (新)网络工程师考点串讲与真题详解
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .gitattributes 文件
  • .NET : 在VS2008中计算代码度量值
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NetCore部署微服务(二)
  • .net打印*三角形
  • .NET轻量级ORM组件Dapper葵花宝典
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C++]运行时,如何确保一个对象是只读的
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [CentOs7]搭建ftp服务器(2)——添加用户