洛谷——P1342 请柬
P1342 请柬
题目描述
在电视时代,没有多少人观看戏剧表演。Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片。他们已经打印请帖和所有必要的信息和计划。许多学生被雇来分发这些请柬。每个学生志愿者被指定一个确切的公共汽车站,他或她将留在那里一整天,邀请人们参与。
这里的公交系统是非常特殊的:所有的线路都是单向的,连接两个站点。公共汽车离开起始点,到达目的地之后又空车返回起始点。学生每天早上从总部出发,乘公交车到一个预定的站点邀请乘客。每个站点都被安排了一名学生。在一天结束的时候,所有的学生都回到总部。现在需要知道的是,学生所需的公交费用的总和最小是多少。
比较简单的一到最短路题目,对于返回,建反向边求最短路即可
#include<cstdio>
#include<queue>
#include<cstring>
#define N 2000005
#define inf 0x7fffffff
#define LL long long using namespace std;
int tot,n,m,head1[N],d[N],vis[N],head2[N],tpt;
LL ans;
struct node{
int to,next,dis;
};
node e1[N],e2[N]; void add(int u,int v,int w,int tp){
if(tp==){e1[++tot].to=v;e1[tot].next=head1[u];head1[u]=tot;e1[tot].dis=w;}
else {e2[++tpt].to=v;e2[tpt].next=head2[u];head2[u]=tpt;e2[tpt].dis=w;}
} inline void spfa(int st,int tp){
for(int i=;i<=n;i++) d[i]=inf;
memset(vis,,sizeof(vis));
d[st]=;vis[st]=;queue<int>q;
q.push(st);
if(tp==)
while(!q.empty()){
int x=q.front();q.pop();vis[x]=;
for(int i=head1[x];i;i=e1[i].next){
int to=e1[i].to,w=e1[i].dis;
if(d[x]+w<d[to]){
d[to]=d[x]+w;
if(!vis[to]){
q.push(to);vis[to]=;
}
}
}
}
else
while(!q.empty()){
int x=q.front();q.pop();vis[x]=;
for(int i=head2[x];i;i=e2[i].next){
int to=e2[i].to,w=e2[i].dis;
if(d[x]+w<d[to]){
d[to]=d[x]+w;
if(!vis[to]){
q.push(to);vis[to]=;
}
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w,);
add(v,u,w,);
}
spfa(,);
for(int i=;i<=n;i++){
ans+=d[i];
}
spfa(,);
for(int i=;i<=n;++i){
ans+=d[i];
}
printf("%lld",ans);
return ;
}
// luogu-judger-enable-o2
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#define LL long long
using namespace std;
#define LL long long
LL n,m,s,ans;
typedef pair<LL,int> pii;
struct ahah{
int nxt,to,dis;
}edge1[],edge2[];
int head1[],tot1,head2[],tot2;
void add(int x,int y,int z,int flag)
{
if(flag==)edge1[++tot1].nxt=head1[x],edge1[tot1].to=y,edge1[tot1].dis=z,head1[x]=tot1;
else edge2[++tot2].nxt=head2[x],edge2[tot2].to=y,edge2[tot2].dis=z,head2[x]=tot2;
}
priority_queue <pii,vector<pii>,greater<pii> >Q;
bool vis[];
LL d[];
void dijkstra1(int s)
{
for(int i=;i<=n;i++)d[i]=1e15;
Q.push(make_pair(,s));
d[s]=;
while(!Q.empty())
{
while(!Q.empty()&&vis[Q.top().second])Q.pop();
if(Q.empty())return ;
int temp=Q.top().second;
d[temp]=Q.top().first;
vis[temp]=;Q.pop();
for(int i=head1[temp];i;i=edge1[i].nxt)
{
if(!vis[edge1[i].to])Q.push(make_pair(d[temp]+edge1[i].dis,edge1[i].to));
}
}
return ;
}
void dijkstra2(int s)
{
for(int i=;i<=n;i++)d[i]=1e15;
Q.push(make_pair(,s));
d[s]=;
while(!Q.empty())
{
while(!Q.empty()&&vis[Q.top().second])Q.pop();
if(Q.empty())return ;
int temp=Q.top().second;
d[temp]=Q.top().first;
vis[temp]=;Q.pop();
for(int i=head2[temp];i;i=edge2[i].nxt)
{
if(!vis[edge2[i].to])Q.push(make_pair(d[temp]+edge2[i].dis,edge2[i].to));
}
}
return ;
}
main()
{
int x,y,z;
scanf("%lld%lld",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z,);add(y,x,z,);
}
dijkstra1();
for(int i=;i<=n;i++)ans+=d[i];
memset(vis,,sizeof(vis));
dijkstra2();
for(int i=;i<=n;i++)ans+=d[i];
printf("%lld",ans);
}
洛谷——P1342 请柬的更多相关文章
- 洛谷P1342 请柬(SPFA)
To 洛谷.1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计 ...
- 洛谷P1342 请柬
P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...
- 洛谷 P1342 请柬 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...
- 洛谷 P1342 请柬(SPFA)
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- 洛谷 P1342 请柬
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- 洛谷—— P1342 请柬
https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...
- 洛谷P1342请柬
传送门啦 核心思想:两遍最短路. 1号点去各地的时间直接套最短路模板,各地到1号点时间用逆向思维,视为求1号点沿反边到各地的时间即可. #include <iostream> #inclu ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
随机推荐
- 浏览器对MP4视频 帧宽度 高度的兼容性
传入oss后 或者 本地 拖动到 浏览器 谷歌 都不能播放 Edge 可以播放 但 Edge不支持 本地拖入 播放 搜狗浏览器 同谷歌
- Bootstrap Dropdown 源码分析
/* ======================================================================== * Bootstrap: dropdown.js ...
- Robot Framework快捷键图标制作 去掉cmd命令窗口
安装好Robot Framework之后,通过 C:\Python27\Scripts\ride.py 启动时会带上一个命令行窗口: 怎样让启动的界面后面不带这个命令行窗口,且图片以机器人显示? 方法 ...
- luogu 4630 [APIO2018] Duathlon 铁人两项
题目大意: 无向图上找三个点 a b c使存在一条从a到b经过c的路径 求取这三个点的方案数 思路: 建立圆方树 这个圆方树保证没有两个圆点相连或两个方点相连 对于每个节点x 设该节点为路径的中间节点 ...
- FreeMarker:目录
ylbtech-FreeMarker:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://yl ...
- 浙江省CIO协会钱塘江论坛近日在网易云创沙龙宣布成立
本文来自网易云社区 9月19日,由网易云与浙江省首席信息官协会共同主办的“网易云创CIO沙龙”在杭州举行,本次活动以“瞩目钱塘,赋能企业数字化创新”为主题,网易云企业服务部总经理岳峥辉,浙江省首席信息 ...
- Avito Code Challenge 2018 A~E
A. Antipalindrome 还以为是什么神dp结果就是分情况讨论啊 原串是一串一样的字符的话输出0,是回文串的话输出n-1,否则直接输出原串长度 #include<iostream> ...
- justify-content属性
justify-content 用于设置或检索弹性盒子元素在主轴方向上的对齐方式. 属性值:flex-start 属性值:flex-end 属性值:center 属性值:space-between 属 ...
- ATX 学习 (三)-atxserver2-android-provider
服务端代码 代码clone到本地,搭好相应环境(怎么搭的这里就不介绍了,很好搭的哈)一般库首先查看main.py文件,debug模式开始运行 一开始就是没接触过的tornado.ioloop,有点偏底 ...
- [SDOI2010]外星千足虫(高斯消元)
高斯消元裸题... 方法一:暴力,O(2^n)20分 方法二:直接Gauss,加点玄学技巧搞得好的话70分 方法三:使用bitset优化,复杂度:$O(\frac{n^3}{ω})$ 不会的同学看一下 ...