出门旅行(tour)

题目描述:

在神奇的 oi 国度,有 n 个城市 m 条双向道路,每条道路连接了两个不同的城市。寒假到了,小 S 决定出门旅游一趟。因为以往跟团旅游多了,这次小 S 决定自驾游。对于自驾游,小 S 最关心的自然是燃油的耗费,为了省钱,小 S 请你帮他找一条最短的路。

输入格式:

第一行两个整数 n,m,表示有 n 个城市和 m 条双向道路。城市从 1..n 编号。
接下来 m 行,每行三个正整数 a,b,c,表示 a 和 b 之间有一条长为 c 的双向道路。a,b 不相同,且 c 不超过 1000
注意:两个城市之间可能会有多条双向道路。
接下来一行两个整数,s,t,表示小 S 本次旅行的出发地和目的地。s,t 不相同。

输出格式:

仅一行一个整数,表示最短的距离。如果不能到达,请输出-1。

样例输入:

3 3
1 2 1
1 3 3
2 3 1
1 3

样例输出:

2

提示:

【样例解释】
1->2->3 即是最优解。
【数据范围】
对于 30%的数据,n<=100,m<=1000
对于 100%的数据,n<=2000,m<=100000

时间限制:1000ms
空间限制:128MByte

#include<bits/stdc++.h>
using namespace std;
int n, m;
struct enode{
int y, z;
enode(int y1, int z1) : y(y1), z(z1) {}
}; struct node{
int dis, v;
node(int x1, int y1) : dis(x1), v(y1) {}
bool operator < (const node &a) const
{
return dis > a.dis;
}
}; vector<enode> e[];
priority_queue<node> q;
int dis[];
bool vis[]; int main()
{
int x, y, z, s, t, v;
cin>>n>>m;
for(int i = ; i <= m; i++){
cin>>x>>y>>z;
e[x].push_back(enode(y, z));
e[y].push_back(enode(x, z));
}
memset(dis, 0x3f3f3f3f, sizeof(dis));
memset(vis, , sizeof(vis));
cin>>s>>t;
dis[s] = ;
q.push(node(, s));
while(!q.empty()){
v = q.top().v;
q.pop();
if(vis[v]) continue;
vis[v] = ;
for(int i = ; i < e[v].size(); i++)
if(dis[v] + e[v][i].z < dis[e[v][i].y]){
dis[e[v][i].y] = dis[v] + e[v][i].z;
q.push(node(dis[e[v][i].y], e[v][i].y));
}
}
if(dis[t] == 0x3f3f3f3f) cout<<-<<endl;
else cout<<dis[t]<<endl;
return ;
}

出门旅行(tour)的更多相关文章

  1. JAVA组程序优化综合考试试题

    题目原型: 有一张标准的树状结构表,里面有Structure_Id和 Parent_Id两个关键列,记录了结点的父子关系.现在要求添加一个字段为 Structure_Code ,标记为 三位一个节点关 ...

  2. 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转

    http://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002412 Java.C++.Python.Ruby.C#.PHP.JavaScript.7つの ...

  3. OS快速开发必备

    github:https://github.com/koknine (终于改成以前的了) 当前移动互联网行业太火爆,移动端的需求日益增长,很多开发人员每天都应对着各种需求,作为一名iOS开发人员,对于 ...

  4. 翻扣告诉你外出旅游时实用的一些小tips

    很多人出行都会带着大包小包,东西胡乱塞成一团,导致每次要用的时候都翻个遍.所以今天游游君为大家推荐几个出门旅行的小技巧. 收拾行李时,把鞋子放进浴帽里.浴帽很容易洗干净,还可以防止鞋子把干净的衣服弄脏 ...

  5. PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点

    PHP.Java.Python.C.C++ 这几种编程语言都各有什么特点或优点 汇编: C: Java: C#: PHP: Python: Go: Haskell: Lisp: C++: &l ...

  6. Atitit 关于共享经济之共享男女朋友的创业计划

    Atitit 关于共享经济之共享男女朋友的创业计划 1. 共享经济的历史与趋势 1 1.1. 共享经济三大特征=产能过剩+共享平台+人人参与. 1 1.2. 共享经济是个大趋势,使用权渐渐的取代所有权 ...

  7. English trip V1 - 19.Where Am I? 我在哪里?Teacher:Patrick Key:Ask for and directions

    In this  lesson you will learn to ask for and give directions. 本节课你将学习到学会问路和指路. 课上内容(Lesson) 人类的几种感: ...

  8. VB.NET &amp; 策略模式(下机用户类型选择)

    上篇文章讲述了对于下机操作和基本数据设定的时间联系,今天主要就是应用"策略模式"来了解了解对于固定用户,以及暂时用户之间的选择,看学习设计模式的时候自己对于策略模式的理解,我们能够 ...

  9. 「案例」让房东在 Airbnb 上展示他们的热情好客

    如何才能让房东准确的描述自己的房源,如何才能让房东充分的展示自己的房源.Airbnb 在这次更新里尝试去解决了这两个问题,让我们跟随作者的文笔去了解一下整个项目的经过. 关于本文 原文作者:Cecil ...

随机推荐

  1. git 基础教程

    git 提交 全部文件 git add .  git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件.注意 -A 选项后面还有一个 ...

  2. 关于java中char占几个字节,汉字占几个字节

    我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的位数是不同的,比如gbk中汉字占2个字节,utf8中多数占3个字节,少数占4个.而所有汉字在java程序中我们都可以简单的用 ...

  3. 换晶振导致stm32串口数据飞码的解决办法

    一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串 ...

  4. java多线程优先级问题

    java 中的线程优先级的范围是1-10,默认的优先级是5.“高优先级线程”会优先于“低优先级线程”执行. 例子: package com.ming.thread.threadpriority; pu ...

  5. .vimrc的配置

    set nocompatible set encoding=utf-8 set fileencodings=utf-8,chinese set tabstop=4 set cindent shiftw ...

  6. MVC execl 导入导出

    MVC execl 导入导出 <input id="xls" name="xls" type="file" style="w ...

  7. C#窗体控件GroupBox修改边框色

    控件Group Box默认的边框的颜色是白色的,在很多时候显得不那么突出.但默认的属性列表里面并没有提供相应的接口.所以只能借助重绘事件. 网上很多都说使用 OnPaint 事件,但是我在事件列表中没 ...

  8. Hibernate课程 初探一对多映射3-4 双向多对一的测试

    1 单向多对一和单向多对一的区别 比如部门和员工,一个部门下有很多员工,如果只查一个员工属于哪个部门,就用单向的,如果还要查一个部门下的所有员工,就用双向的. 2 双向多对一的配置 除了单向xml和双 ...

  9. Flask文件目录----- auth/blog 文件

    import functools from flask import (Blueprint, flash, g, redirect, render_template, url_for, request ...

  10. While, DoWhile in WorkFlow.

    On 03/03/2010, in 4.0, WF, by bcakiroglu While Activity In a While activity, the activity in the Bod ...