Travel SCU - 4444

2024-02-22 18:38
文章标签 travel scu 4444

本文主要是介绍Travel SCU - 4444,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://acm.scu.edu.cn/soj/problem.action?id=4444

先看 1与n之间是否有原图边 有的话就求补图最短路和a比较 没有就求原图最短路和b比较 都是一边BFS

#include <bits/stdc++.h>
using namespace std;
#define ll long longstruct node
{int v;int next;
};queue <int> que0,que1,que2,que3,que4;
node edge[1000010];
ll dis[200010];
ll a,b;
int first[200010],book[200010],cnt[200010];
int n,m,num;void addedge(int u,int v)
{edge[num].v=v;edge[num].next=first[u];first[u]=num++;
}ll solveI()
{int i,u,v;while(!que0.empty()) que0.pop();memset(dis,0x3f,sizeof(dis));memset(book,0,sizeof(book));que0.push(1);dis[1]=0;book[1]=1;while(!que0.empty()){u=que0.front();que0.pop();for(i=first[u];i!=-1;i=edge[i].next){v=edge[i].v;if(!book[v]){que0.push(v);dis[v]=dis[u]+a;book[v]=1;}}}return dis[n];
}ll solveII()
{int i,u,v,sz,cur;while(!que1.empty()) que1.pop();while(!que2.empty()) que2.pop();while(!que3.empty()) que3.pop();while(!que4.empty()) que4.pop();memset(dis,0x3f,sizeof(dis));memset(book,0,sizeof(book));memset(cnt,0,sizeof(cnt));que1.push(1);for(i=2;i<=n;i++) que2.push(i);dis[1]=0;cur=1;while(!que1.empty()&&!que2.empty()){sz=que1.size();while(!que1.empty()){u=que1.front();que1.pop();for(i=first[u];i!=-1;i=edge[i].next){v=edge[i].v;if(book[v]!=cur) cnt[v]=1;else cnt[v]++;book[v]=cur;}}while(!que2.empty()){u=que2.front();que2.pop();if(book[u]!=cur||cnt[u]<sz){que3.push(u);dis[u]=cur*b;}else que4.push(u);}while(!que3.empty()){u=que3.front();que3.pop();que1.push(u);}while(!que4.empty()){u=que4.front();que4.pop();que2.push(u);}cur++;}return dis[n];
}int main()
{int i,u,v,flag;while(scanf("%d%d%lld%lld",&n,&m,&a,&b)!=EOF){memset(first,-1,sizeof(first));num=0,flag=0;for(i=1;i<=m;i++){scanf("%d%d",&u,&v);addedge(u,v);addedge(v,u);if((u==1&&v==n)||(u==n&&v==1)) flag=1;}if(!flag) printf("%lld\n",min(b,solveI()));else printf("%lld\n",min(a,solveII()));}return 0;
}

 

这篇关于Travel SCU - 4444的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736149

相关文章

QT Travel

Code Resource: https://github.com/MoreYoungGavin/QT_Travel.git What is QT? QT is a cross-platform application development framework for desktop,embedded and mobile. What need install QT before? Yo

测试资料4444

一、HTML 1、HTML介绍 1.1web前端三大核心技术 HTML:负责网页架构 CS:负责网页的样式、美化 JS:负责网页的行为 1.2 HTML标签 单标签:<标签名 > 双标签内容 标签属性: 2 常用标签 script:js标签 style:css标签 link:外部加载css标签

[SCU 4519] 来签个到吧 (GCD + 期望)

SCU - 4519 盒子里有若干个球,每个球上面都有一个数字,数字各不相同 每次从中选两个数字 x,y,设 z= |x−y| | x - y | 若 z不在盒子中,则加入这个数 反复执行操作,直到无法再向盒子里加数 随机从盒子中摸出一个球,反复执行这个操作直到所有球都被摸出来过 问最后的期望步数 第一部分的构造: 设所有数的最大公因数是D 则所有数可以表示为 x=k

[SCU 4516] Mingo's Game (斜率DP)

SCU - 4516 有 N个关卡,可以分为 K块,每个关卡都有个权值 ti t_i 每次选择最早没有通关的关卡块,设这个关卡包含了 [i,j] [i,j]的游戏 选到最早没有通关的关卡是k, 选到 k的概率是 P=tk∑jx=ix P =\frac {t_k} {\sum_{x=i}^j x} 选到一个关卡一定能通关,花费一小时 求合理分块的情况下,通关所有关卡块的期望时间最小

[SCU 4515] 又见背包 (可行性背包DP)

SCU - 4515 有 N个大小不同的数字,第 i种数字为 a_i,每种有 m_i个 求问能否从中选出若干个数字,使他们的和为 K 背包九讲 2.0的例题,用多重背包的二进制能过 根据 lyb dalao所述 因为 K<1e5 K<1e5,所以其实最后用到的物品数量不会超过 1e5 所以 mi=min(mi,K/ai) m_i = min(m_i, K/a_i),所以用

旅行(travel)

旅行 题目描述 暑假又到了,小A同学要进行 N 天的旅行,旅行社收费方案是按天收,即第 i 天的费用为 A i A_i Ai​ ,当然假期旅行社搞活动推出了优惠券,你买了优惠券可以优惠 D 天(不一定连续)的费用,优惠后的价格为 P。如果剩余 2 天,优惠券的作用是 3 天,那么依然可以使用。 小A同学如何做才能在这 N 天旅行中花费最小呢? 输入格式 第一行有 3 个整数 N,D,P。

hdu 4571 Travel in time(Floyd+记忆化)

题目链接:hdu 4571 Travel in time 题目大意:n个城市,m条路,总时间t,起始城市s,终点城市e,接下来给出各个城市的浏览时间,各个城市浏览后的满意程度。然后是m条路的信息。要求一个浏览顺序,使得总的满意程度最大,然后经过一个城市可以选择不去浏览,当前浏览城市的满意度一定要比前一个浏览城市的满意度高,并且最终要回到城市e 解题思路:因为经过一个城市可以不浏

Codeforces 466A Cheap Travel(水题)

题目链接:Codeforces 466A Cheap Travel 题目大意:坐n次地铁,m张票卖b元,单张a元,问最小花费。

HDU 4885 TIANKENG’s travel(几何bfs)

HDU 4885 TIANKENG’s travel 题目链接 题意:给定起点,终点,和一些加油站,要求路过最少的加油站到终点,两点距离必须小于L 思路:先建图,建图时把两点中间没有点,并且距离能到达的建一条长度1的边,那么问题就是如何判断中间没有点,先把所有点按x排序,然后每次找的时候,利用一个set存放当前已有向量,那么下次如果又出现肯定就是不能加入的点,利用set去搞,然后建完

研发作Scu看工项管团队协通敏捷开发平台

研发协作Scrum看板工具项目管理团队协通敏捷开发平台 Leangoo官网:www.leangoo.com Leangoo是由国内敏捷最权威的 Scrum中文网 研发的一款敏捷项目管理协作平台,适用于团队产品研发、项目管理等的协作平台。   看板式管理 简洁、轻量、可视化、上手快 超级灵活的配置,可满足各个不同行业高可视化多人协同,功能全面轻量协作实时同步,五分钟让团队上手 思维导图