第十五届四川省省赛 SCU - 4444 Travel
给你一个一共由两种边的完全图 要求你求1到N的最短路
q队列为前沿队列(已探索过且最外围的点) p队列为未探索队列(未探索过的点)
depth这个数组的用法并不是代表实际上这个点在第几层 而是防止死循环 保证每次通过前沿的一个点都只会遍历p中每个点一次
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const long long mod = 1e9+;
const int maxn = 5e5+;
const int inf = 1e9+;
int n,m,a,b,nm,qwq;
int head[maxn];
ll dis[maxn];
struct node{
int to,nxt;
}edg[maxn*];
void add(int x,int y){
edg[++nm].to = y;
edg[nm].nxt = head[x];
head[x]=nm;
if(x==&&y==n)qwq=;
}
queue<int> p,q;
int f[maxn],dep[maxn];
void solve(){
dis[]=;
int i,j,x,y;
p.push();
for(i=;i<=n;i++){
q.push(i);
}
for(i=;i<=n;i++){
f[i]=;dep[i]=;
}
while(!p.empty()){
if(q.empty())break;
x = p.front();
p.pop();
for(i=head[x];i;i=edg[i].nxt)f[edg[i].to]=x;
j = dep[q.front()];
while(!q.empty()){
y = q.front();
if(dep[y]!=j)break;
q.pop();
dep[y]=dep[y]+;
if(f[y]==x)q.push(y);
else{
p.push(y);
dis[y]=dis[x]+b;
}
}
}
while(!p.empty())p.pop();
while(!q.empty())q.pop();
if(dis[n]==-||dis[n]>a)printf("%d\n",a);
else printf("%lld\n",dis[n]);
} void dist(){
int i,j,x,y;
dis[]=;
p.push();
while(!p.empty()){
x = p.front();
p.pop();
for(i=head[x];i;i=edg[i].nxt){
y = edg[i].to;
if(dis[y]!=-)continue;
dis[y]=dis[x]+a;
p.push(y);
}
}
if(dis[n]==-||dis[n]>b)printf("%d\n",b);
else printf("%lld\n",dis[n]);
}
int main()
{
while(scanf("%d%d%d%d",&n,&m,&a,&b)==){
qwq=;
nm = ;
int i,j,x,y;
for(i=;i<=n;i++){
head[i]=;
dis[i]=-;
}
for(i=;i<=m;i++){
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
if(a>=b){
if(qwq==){
printf("%d\n",b);
}
else solve();
}
else{
if(qwq==){
printf("%d\n",a);
}
else dist();
}
}
}
第十五届四川省省赛 SCU - 4444 Travel的更多相关文章
- 第十五届四川省省赛 SCU - 4443 Range Query
先给你1~N的N个数 再给你每种最多50个的条件(ai,bi,ci) 或者[ai,bi,ci] (ai,bi,ci)表示下标ai到bi的最小值必为ci [ai,bi,ci]表示下标ai到bi的最大值必 ...
- 第十五届四川省省赛 SCU - 4439 Vertex Cover
给你一个一般图 保证每条边的一端下标不大于30 问最小覆盖集的大小为多少 爆搜:枚举前30个点是否在覆盖集内 剪枝1:如果不在的话 那么他所连的下标大于30的点都必须选 剪纸2:最优解剪枝 #incl ...
- Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again
Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...
- 北京师范大学第十五届ACM决赛-重现赛 B Borrow Classroom (树 ——LCA )
链接:https://ac.nowcoder.com/acm/contest/3/B 来源:牛客网 Borrow Classroom 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 2 ...
- Minieye杯第十五届华中科技大学程序设计邀请赛网络赛D Grid(简单构造)
链接:https://ac.nowcoder.com/acm/contest/560/D来源:牛客网 题目描述 Give you a rectangular gird which is h cells ...
- H-Modify Minieye杯第十五届华中科技大学程序设计邀请赛现场赛
题面见 https://ac.nowcoder.com/acm/contest/700#question 题目大意是有n个单词,有k条替换规则(单向替换),每个单词会有一个元音度(单词里元音的个数)和 ...
- Minieye杯第十五届华中科技大学程序设计邀请赛网络赛 部分题目
链接:https://pan.baidu.com/s/12gSzPHEgSNbT5Dl2QqDNpA 提取码:fw39 复制这段内容后打开百度网盘手机App,操作更方便哦 D Grid #inc ...
- 福州大学第十五届程序设计竞赛_重现赛B题迷宫寻宝
Problem B 迷宫寻宝 Accept: 52 Submit: 183Time Limit: 1000 mSec Memory Limit : 32768 KB Problem De ...
- 第十五届浙江省赛 F Now Loading!!!
Now Loading!!! Time Limit: 1 Second Memory Limit: 131072 KB DreamGrid has integers . DreamGrid ...
随机推荐
- curl and wget
写在前面: a. 对比curl 和 wget 的相同和不同点 来记忆 a-1 curl url 直接将请求内容输出到标准输出. 如果下载不是瞬时间完成,会显示下载进度条,如果向取消,加-s : w ...
- PHP学习(7)——面向对象(上)
1.理解面向对象的概念 面向对象软件的一个重要优点是支持和鼓励封装的能力.封装也叫数据隐藏. 在面向对象的软件中,对象是一个被保存数据和操作这些数据的操作方法的唯一.可标识的集合. 对象可以按类进行分 ...
- phpstorm设置的快捷键突然失效了,提示: IdeaVim ...
下班后,打开PHPstorm,突然感觉不对,经常用的快捷键突然用不了. 例如按了 Ctrl+F 快捷键后,提示: IdeaVim! Using the Ctrl+F shortcut for Vim ...
- 使用Python执行dos命令并获取输出的结果
import os import subprocess # 第一种 result1 = subprocess.check_output('dir').decode('GBK') print(resul ...
- 人渣给我笔记本网络适配器里加的的“bluetooth设备(个人局域网)”,卸载不掉
- Shortest Distance from All Buildings
You want to build a house on an empty land which reaches all buildings in the shortest amount of dis ...
- [转帖]InfluxDB 1.2.0安装及新旧版本的注意事项
InfluxDB 1.2.0安装及新旧版本的注意事项 http://haibing.org/245?zwlqby=npztq3 挺好的文章 很好的解决了 上一个文档里面 关于 web admin 的问 ...
- mysql函数使用报错
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法 解决办法也有两种,第一种是在创建 ...
- 深入理解Redux之手写React-Redux
React-Redux主要由两部分组成,一是Provider(提供者),顾名思义作用就是提供状态数据. 另一部分是connect函数,它的作用是把UI组件和状态数据“连接”起来,实现了Model和Vi ...
- 高性能MySQL3_笔记0
该书2015年5月出版的,实际上已经有些老了,但是经典的东西还是经典. 该书一共16章 1.Mysql的架构与历史 2.Mysql基准测试 3.服务器性能剖析 4.Schema与数据类型优化 5.创建 ...