Bakery

Descriptions

玛莎想在从1到n的n个城市中开一家自己的面包店,在其中一个城市烘焙松饼。

为了在她的面包房烘焙松饼,玛莎需要从一些储存的地方建立面粉供应。只有k个仓库,位于不同的城市编号为a1, a2,…,ak。

不幸的是,玛莎居住的那个国家的法律禁止在任何一个有仓库的城市开设面包店。她只能在另一个n - k城市中的一个开这家店,当然,面粉配送也要付费——从仓库到面包房每走一公里,玛莎就得支付1卢布。

形式上,玛莎将支付x卢布,如果她将打开面包店在一些城市b (ai≠b每1≤≤k),选择一个存储在一些城市s (s = aj一些1≤j≤k)和b和s是连接道路的道路摘要长度的x(如果有多个路径,玛莎是能够选择应该使用)。

玛莎非常节俭和理性。她对一个城市感兴趣,在那里她可以开自己的面包店(在k个仓库中选择一个,在有面包店的城市和有仓库的城市之间选择一条道路),并为面粉配送支付尽可能少的卢布。请帮玛莎找到这笔钱。

Input

输入的第一行包含三个整数n, m和k(1≤n, m≤105,0≤k≤n)——玛莎居住的乡村城市数量,它们之间的道路数量,以及面粉库数量。

然后是m行。每一个包含u, v和l三个整数(1≤u, v≤n, 1≤l≤109,u≠v),表示u和v之间有一条长度为l公里的道路。

如果k >为0,那么输入的最后一行包含k个不同的整数a1 a2…, ak(1≤ai≤n)——有面粉仓库的城市数量。如果k = 0,则在输入中不显示这一行。

Output

印尽可能少的卢布,玛莎应该支付面粉运送在唯一的行。

如果面包店不能在n个城市中的任何一个开设(同时满足条件),请在唯一一行打印- 1。

Examples

Input
5 4 2
1 2 5
1 2 3
2 3 4
1 4 10
1 5
Output
3
Input
3 1 1
1 2 3
3
Note

样例一示意图,暗色的是仓库,白色的是普通城市

题目链接

https://vjudge.net/problem/CodeForces-707B

思维题

城市1和城市5有仓库,那我们只需要考虑城市2和城市4,之所以不考虑城市3是因为仓库1到城市3必须要经过城市2,显然城市2比城市3离仓库1更近

于是,我们只要把有仓库的城市标记,如果某条双向路一端连着有仓库的城市,另一端连着没有仓库的城市,那就把这条路的长度取来作比较,留下距离最短的路即可

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
#define Mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
#define Maxn 100000+5
using namespace std;
int n,m,k;
int u[Maxn];//起点城市
int v[Maxn];//终点城市
int l[Maxn];//城市之间的距离
int vis[Maxn];//vis[x]=1 x这个城市为仓库
int main()
{
MEM(vis,);//一开始都是城市
cin>>n>>m>>k;
for(int i=; i<=m; i++)
cin>>u[i]>>v[i]>>l[i];
for(int i=; i<=k; i++)//标记仓库
{
int x;
cin>>x;
vis[x]=;
}
int ans=INF;
for(int i=; i<=m; i++)
{
if(!vis[u[i]]&&vis[v[i]]||!vis[v[i]]&&vis[u[i]])//一个城市为仓库,一个城市不是仓库,取中间距离
ans=min(ans,l[i]);
}
if(ans!=INF)
cout<<ans<<endl;
else
cout<<-<<endl;
return ;
}

【CodeForces - 707B】Bakery(思维水题)的更多相关文章

  1. CodeForces 604C 【思维水题】`

    题意: 给你01字符串的长度再给你一个串. 然后你可以在这个串中选择一个起点和一个终点使得这个连续区间内所有的位取反. 求: 经过处理后最多会得到多少次01变换. 例如:0101是4次,0001是2次 ...

  2. Codeforces Gym 100531G Grave 水题

    Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...

  3. HDU 2674 N!Again(数学思维水题)

    题目 //行开始看被吓一跳,那么大,没有头绪, //看了解题报告,发现这是一道大大大的水题,,,,,//2009 = 7 * 7 * 41//对2009分解,看它有哪些质因子,它最大的质因子是41,那 ...

  4. HDOJ/HDU 1256 画8(绞下思维~水题)

    Problem Description 谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发. Input 输入的第一行为一个整数N,表示后面有N组数据. 每组数据中有一个字符和一 ...

  5. 2019年华南理工校赛(春季赛)--I--炒股(简单思维水题)

    水题,想想就过了 题目如下: 链接:https://ac.nowcoder.com/acm/contest/625/I来源:牛客网 攒机一时爽,一直攒机一直爽. 沉迷攒机的胡老师很快就发现,他每天只能 ...

  6. Iroha and a Grid AtCoder - 1974(思维水题)

    就是一个组合数水题 偷个图 去掉阴影部分  把整个图看成上下两个矩形 对于上面的矩形求出起点到每个绿点的方案 对于下面的矩形 求出每个绿点到终点的方案 上下两个绿点的方案相乘后相加 就是了 想想为什么 ...

  7. codeforces 706A A. Beru-taxi(水题)

    题目链接: A. Beru-taxi 题意: 问那个taxi到他的时间最短,水题; AC代码: #include <iostream> #include <cstdio> #i ...

  8. codeforces 569B B. Inventory(水题)

    题目链接: B. Inventory time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. Codeforces 489A SwapSort (水题)

    A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  10. codeforces 688A A. Opponents(水题)

    题目链接: A. Opponents time limit per test 1 second memory limit per test 256 megabytes input standard i ...

随机推荐

  1. 多种view视图和序列化--django2

    models.py from django.db import models # Create your models here. class Idc(models.Model): name = mo ...

  2. 前端知识体系:JavaScript基础-变量和类型

    前端工程师自检清单 1. JavaScript规定了几种语言类型 2. JavaScript对象的底层数据结构是什么 3. Symbol类型在实际开发中的应用.可手动实现一个简单的 Symbo 4. ...

  3. 设置pycharm环境下python内存

    有的时候在pycharm下的python需要加载很大的内存,那我们如何去修改pycharm的环境的内存呢?? 第一个栈内存,第二是堆内存.

  4. 4. CSS新特性之浏览器私有前缀

    1. 浏览器私有前缀 浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无需添加 -moz-:代表firefox浏览器私有属性 -ms-:代表ie浏览器私有属性 -webkit-:代表safar ...

  5. 【SQL-历史执行语句查询】 查询对数据库执行了哪些SQL

    Sql语句 QS.creation_time as '创建时间', ), (( THEN DATALENGTH(st.text) ) ) AS '查询语句' , ST.text as '执行文本', ...

  6. 响应json数据之发送ajax的请求

    一.前端异步请求代码: <span style="font-size:14px;">$.ajax ({ type: "POST", //请求的方式 ...

  7. 【原创】洛谷 LUOGU P3379 【模板】最近公共祖先(LCA) -> 倍增

    P3379 [模板]最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询 ...

  8. JVM GC之垃圾收集器

    简述 如果说收集算法时内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.这里我们讨论的垃圾收集器是基于JKD1.7之后的Hotspot虚拟机,这个虚拟机包含的所有收集器如图: Serial 收集 ...

  9. LeetCode 岛屿的最大面积(探索字节跳动)

    题目描述 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的 ...

  10. visible,invisible和GONE的区别

    在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”.“invisible”.“gone”.主要用来设置控制控件的显示和隐藏.有些人可能会疑惑In ...