[wikioi]回家
http://wikioi.com/problem/1079/
单源最短路径,可以用dijkstra来做。这里采用了heap优化,复杂度是(V+E)logV。这里用了STL的优先队列(堆),重复加入pair没有问题,因为dist小的会先出来。为了避免重复扩展,用了visit判重,这个也不是必须的。
注意的是:
1.pair使用的时候,把距离放在first的位置,那么在priority queue里,距离小的会先出来。
2.priority_queue<pp, vector<pp>, greater<pp> > que;这样定义,小的先出来。
3.使用graph[from][to] ?来判断是否用from=>to这条路。
#include <iostream>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <utility>
#include <climits>
#include <functional>
using namespace std; #define pp pair<int, char> int main()
{
int n;
cin >> n;
map<char, map<char, int> > graph; // 'A'-'Z', 'a'-'z'
map<char, int> dist;
set<char> visit;
for (int i = 0; i < n; i++) {
char from, to;
int weight;
cin >> from >> to >> weight;
graph[from][to] = min(weight, graph[from][to] ? graph[from][to]: INT_MAX);
graph[to][from] = min(weight, graph[to][from] ? graph[to][from]: INT_MAX);
} int ans = INT_MAX;
char ansc;
priority_queue<pp, vector<pp>, greater<pp> > que;
dist['Z'] = 0;
que.push(pp(0, 'Z')); while (!que.empty()) {
pp edge = que.top();
que.pop();
int weight = edge.first;
char node = edge.second;
if (visit.count(node) != 0) continue;
visit.insert(node);
for (map<char,int>::iterator it = graph[node].begin();
it != graph[node].end(); it++) {
if (!dist.count(it->first) ||
it->second + dist[node] < dist[it->first]) {
// add to que
dist[it->first] = it->second + dist[node];
que.push(pp(dist[it->first], it->first));
if (ans > dist[it->first] && it->first >= 'A' && it->first < 'Z') {
ans = dist[it->first];
ansc = it->first;
}
}
}
} cout << ansc << " " << ans << endl;
return 0;
}
[wikioi]回家的更多相关文章
- flhs笔试题-回家上机实践
这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...
- 三石推荐!把 Bootstrap 小清新带回家!
无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion 喜欢就来赞一个! 把麻烦留给三石 ...
- 不写完不让回家的JQuery的事件与动画
在这看不见太阳的小黑屋里,苦逼的一天又开始了 好了闲话我也就不扯了,接下来我就来说说我对jQuery事件和动画的理解吧!!! 还是得再扯两句,我们敬爱的,Y老师讲完了,jQuery事件和动画,对着我们 ...
- 魔法禁书目录2:回家(codevs 3024)
题目描述 Description 大妈打完三战回家,我知道他是怎么回来的,欧洲到日本有L个站点他决定乘坐恰好n次飞机(不是学院都市的超音速飞机)和m次火车来从第一个站点到达最后一个站点.但是有一点很重 ...
- 【wikioi】1041 Car的旅行路线
题目链接 算法:最短路(数据弱,Floyd也能过) 惨痛的教训:此题我至少提交了20次,原因在于= =太草率和粗心了,看到那个多少组数据以为是城市的数量,导致数组开得小小的= =.(对不起,wikio ...
- 【wikioi】1040 统计单词个数
题目链接 算法:划分型DP PS:被卡过3天.日期:2013-10-10 ~ 2013-10-12 18:52:48 这题是我提交了13次AC= =汗= = 题目描述: 给出一个长度不超过200的由小 ...
- iphone6 帶回家”活動!
十一小長假即將來臨,周向榮還準備窩在家裏坐等“鋒菲戀”的後續結果嗎?雖然宅男無罪,但是請不要繼續在論壇裏高呼“李亞鵬娶了張柏芝”等口號,放下你“不吐槽會死星人”的特質,走出家門去領略一下祖國的大好山河 ...
- [wikioi 1418]铃仙•优昙华院稻叶(东方幻想乡系列模拟赛)(树上递推)
题目:http://www.wikioi.com/problem/1418/ 分析: 一看就肯定是树上的递推 设f[i][j][k]表示第i秒在k点(从j点走过来的)的概率 则f[i][j][k]=f ...
- [wikioi 1307][poj 2054]欧少堆(乱搞)
题目:http://www.wikioi.com/problem/1307/ 题意:给你一个树,上面有n个节点,每个节点都有一个价值p,求一个n个节点的排列顺序,是的Σi*p[i]最小(要求父节点一定 ...
随机推荐
- Centos如何设置静态IP地址,LINUX怎么修改IP地址
1.登陆连接centos系统,输入 ifconfig 可以查看到当前本机的IP地址信息 2.临时设置IP地址: 输入 ifconfig eth0 (默认是第一个网卡) 后面接IP地址, 网络掩码和 网 ...
- Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理
Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理 >>>>>>>>>>>>>>>>& ...
- NC portal怎么重新开始入门,整个配置过程包括配置一个节点
有一份文档,之后会上传,暂时不上传
- Repositories.EntityFramework 实现方式
今天记录一下自己的EntityFramework数据访问层.这里用通过泛型Repository的方式实现了数据的访问.先上一张结构图. Configuration文件夹里面的类是全部实体映射类.这些类 ...
- HttpServlet was not found on the Java
今天新建jsp时出现了一个错误,如下图 分析:应该是没有找到相关jar包 解决方案: 如图: 这回就没错了
- XMLHttpRequest cannot load的问题解决方法
在chrome中可以用--allow-file-access-from-files 命令来解决这个问题.右键点击chrome的快捷方式选择属性.在目标一栏中添加--allow-file-acces ...
- 1_使用Java文件的并发写
为了实现,并发写操作,首先实验一下在本地情况下, 将一个文件切分成若干个 文件块 然后将文件块 通过多线程的并发的方式写入到指定目录下的文件中. 下面是简单的试着实现代码,暂时 先进行记录一下: im ...
- javascript 之封装技巧
技术--- 闭包 javascript中的对象属性都是公开的,外界都可访问到,例: function cat(){ this.name = '猫'; this.climb = function(){ ...
- iOS 多张图片保存到相册问题(add multiple images to photo album)
不知道朋友们有木有做过多图保存到系统的相册这个需求,我在用`UIImageWriteToSavedPhotosAlbum`保存图片时候,在代理回调方`didFinishSavingWithError` ...
- 05_天气查询_JAX-WS方式_客户端
[客户端特点] 支持面向对象开发. 客户端功能调用webService,首先得知道WebService的地址. 一般情况下,只要知道了wsdl的地址,就可以知道WebService的地址. 我们上一篇 ...