首页 > 四川第七届 I Travel(bfs)

四川第七届 I Travel(bfs)

Travel

The country frog lives in has nn towns which are conveniently numbered by 1,2,,n1,2,…,n.

Among n(n1)2n(n−1)2 pairs of towns, mm of them are connected by bidirectional highway, which needs aa minutes to travel. The other pairs are connected by railway, which needs bb minutes to travel.

Find the minimum time to travel from town 11 to town nn.

Input

The input consists of multiple tests. For each test:

The first line contains 44 integers n,m,a,bn,m,a,b (2n105,0m5105,1a,b1092≤n≤105,0≤m≤5⋅105,1≤a,b≤109). Each of the following mmlines contains 22 integers ui,viui,vi, which denotes cities uiui and vivi are connected by highway. (1ui,vin,uivi1≤ui,vi≤n,ui≠vi).

Output

For each test, write 11 integer which denotes the minimum time.

Sample Input

    3 2 1 31 22 33 2 2 31 22 3

Sample Output

    23



题意:有n个城市,编号为1~n,每个城市都相互连通,其中有m对城市通过公路连通,其他的城市通过铁路连通,经过公路的时间为a,

经过铁路的时间为b,问从1到达n的时间最短为多少.

#include
#include
#include
#include
#include<string>
#include
#include
#include
#include
#define  ll long long
using namespace std;
int n,m;
ll a,b;
vector<int>v[100005];
struct node
{int v;ll t;
};
queueq;
bool bo[100005];
ll min1(ll a,ll b)
{if(a>b)return b;return a;
}
int main()
{while(~scanf("%d %d %lld %lld",&n,&m,&a,&b)){while(!q.empty()) q.pop();for(ll i=0;i<100005;i++) v[i].clear();memset(bo,0,sizeof(bo));bool bb=0;for(ll i=1;i<=m;i++){int x,y;scanf("%d %d",&x,&y);v[x].push_back(y);v[y].push_back(x);if((x==1&&y==n)||(x==n&&y==1))bb=1;//可能高速比公路慢}if(a>=b){//挑出与n没有高速公路的点中存不存在与1也没有高速公路的点if(bb==0)printf("%d
",b);else{for(int i=2;i){bool is=0;for(int j=0;j){if(v[i][j]==1||v[i][j]==n)is=1;}if(is==0){bb=0;break;}}if(bb==0)printf("%d
",min(a,2*b));else printf("%d
",a);}continue;}node s;s.v=1;s.t=0;q.push(s);ll mx=b;bo[1]=1;bool f=0;while(!q.empty()){node s;s=q.front();q.pop();for(int i=0;i){int y=v[s.v].at(i);if(bo[y]) continue;if(y==n){mx=min1(mx,(s.t+1)*a);f=1;break;}node ss;ss.t=s.t+1;ss.v=y;q.push(ss);}if(f)break;}printf("%lld
",mx);}return 0;
}

 





转载于:https://www.cnblogs.com/caiyishuai/p/8955140.html

更多相关:

  • #include #include #include #include #include #include #include

  • 题目:表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"及"-1E-16"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。 解题: 数值错误的形式有多种多样,但是正确的...

  • 加法伺候  //超过20位数值相加---------------------------------------- function bigNumAdd(a, b) {if (!(typeof a === "string" && typeof b === "string")) return console.log("传入参数必...

  • 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程...

  • 简单record 一下 #include // 'struct sockaddr_in' #include #include // 'struct ifreq' and 'struct if_nameindex' #include #inc...

  • 关于点云的分割算是我想做的机械臂抓取中十分重要的俄一部分,所以首先学习如果使用点云库处理我用kinect获取的点云的数据,本例程也是我自己慢慢修改程序并结合官方API 的解说实现的,其中有很多细节如果直接更改源程序,可能会因为数据类型,或者头文件等各种原因编译不过,会导致我们比较难得找出其中的错误,首先我们看一下我自己设定的一个场景,...

  • /* 使用正态分布变换进行配准的实验 。其中room_scan1.pcd room_scan2.pcd这些点云包含同一房间360不同视角的扫描数据 */ #include #include #include #include

  • #include #include #include #include ...

  • #include #include #include #include #include #include...

  • #include #include #include #include int main (int argc,...

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...