[USACO2007FEBS] Cow Party S
题目描述
寒假到了,\(n\) 头牛都要去参加一场在编号为 \(x\) 的牛的农场举行的派对,农场之间有 \(m\) 条有向路,每条路都有一定的长度。
每头牛参加完派对后都必须回家,无论是去参加派对还是回家,每头牛都会选择最短路径,求这 \(n\) 头牛的最短路径(一个来回)中最长的一条路径长度。
输入格式
第一行有三个整数,分别表示牛的数量 \(n\),道路数 \(m\) 和派对农场编号 \(x\)。
接下来 \(m\) 行,每行三个整数 \(u, v, w\),表示存在一条由 \(u\) 通向 \(v\) 的长度为 \(w\) 的道路。
输出格式
输出一行一个整数表示答案。
样例 #1
样例输入 #1
4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3
样例输出 #1
10
提示
样例 1 解释
数据规模与约定
对于全部的测试点,保证 \(1 \leq x \leq n \leq 10^3\),\(1 \leq m \leq 10^5\),\(1 \leq u,v \leq n\),\(1 \leq w \leq 10^2\),保证从任何一个结点出发都能到达 \(x\) 号结点,且从 \(x\) 出发可以到达其他所有节点。
考虑最短路,先从起始点跑一边dijkstra,然后把所有的边反过来,再跑一边dijkstra,我们就可以知道每个点一来一回的距离。找个最大的就可以了。
不要用SPFA,n*m会爆。
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N=1e6+5;
int n,m;
int head[N];
int u[N],v[N],x;
long long w[N],dis[N],ret[N];
struct edge{
int v,nxt;
long long w;
}e[N];
int idx;
void add_edge(int u,int v,int w)
{
e[++idx].v=v;
e[idx].w=w;
e[idx].nxt=head[u];
head[u]=idx;
}
struct node{
int v;
long long dis;
bool operator<(const node&n)const{
return dis>n.dis;
}
};
priority_queue<node>pq;
bool vis[N];
void dijskra(int s)
{
dis[s]=0;
pq.push((node){s,0});
while(!pq.empty())
{
int k=pq.top().v;
pq.pop();
if(vis[k])
continue;
vis[k]=1;
for(int i=head[k];i;i=e[i].nxt)
{
if(!vis[e[i].v]&&dis[e[i].v]>dis[k]+e[i].w)
{
dis[e[i].v]=dis[k]+e[i].w;
pq.push((node){e[i].v,dis[e[i].v]});
}
}
}
}
long long ans;
int main()
{
cin>>n>>m>>x;
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i]>>w[i];
add_edge(u[i],v[i],w[i]);
}
memset(dis,1,sizeof(dis));
dijskra(x);
memcpy(ret,dis,sizeof(dis));
memset(dis,1,sizeof(dis));
memset(head,0,sizeof(head));
memset(vis,0,sizeof(vis));
idx=0;
for(int i=1;i<=m;i++)
add_edge(v[i],u[i],w[i]);
dijskra(x);
for(int i=1;i<=n;i++)
ans=max(ans,ret[i]+dis[i]);
cout<<ans<<endl;
}
[USACO2007FEBS] Cow Party S的更多相关文章
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心
SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...
- HDU Cow Sorting (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1 ...
- [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 试题描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发 ...
- 细读cow.osg
细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点 ...
- POJ 3176 Cow Bowling
Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13016 Accepted: 8598 Desc ...
- raw,cow,qcow,qcow2镜像的比较
在linux下,虚拟机的选择方式有很多,比如vmware for linux,virtual box,还有qemu,在以前,使用qemu的人不多,主要是使用起来有些麻烦,但现在随着Openstack的 ...
- poj1985 Cow Marathon (求树的直径)
Cow Marathon Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 3195 Accepted: 1596 Case ...
- (01背包变形) Cow Exhibition (poj 2184)
http://poj.org/problem?id=2184 Description "Fat and docile, big and dumb, they look so stupid ...
- 图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12674 Accepted: 5651 ...
随机推荐
- 《CTFshow-Web入门》02. Web 11~20
@ 目录 web11 题解 原理 web12 题解 web13 题解 web14 题解 web15 题解 web16 题解 原理 web17 题解 web18 题解 原理 web19 题解 web20 ...
- 重要变更 | Hugging Face Hub 的 Git 操作不再支持使用密码验证
在 Hugging Face,我们一直致力于提升服务安全性,因此,我们将对通过 Git 与 Hugging Face Hub 交互时的认证方式进行更改.从 2023 年 10 月 1 日 开始,我们将 ...
- 如何做一个完美的api接口?
如何做一个api接口?:我们知道API其实就是应用程序编程接口,可以把它理解为是一种通道,用来和不同软件系统间进行通信,本质上它是预先定义的函数:-api,接口 1 我们知道API其实就是应用程序编程 ...
- 使用 OpenTelemetry 构建 .NET 应用可观测性(2):OpenTelemetry 项目简介
前世今生 OpenTracing OpenTracing 项目启动于 2016 年,旨在提供一套分布式追踪标准,以便开发人员可以更轻松地实现分布式追踪. OpenTracing 定义了一套 Traci ...
- js调起android安卓与ios苹果方法 vue3.0 + ts
let shareSelect = (ev :any) => { const u :any= navigator.userAgent; const win :any = window const ...
- yum&二进制安装PostgreSQL 12
一.yum安装&配置PostgreSQL 12 目录 一.yum安装&配置PostgreSQL 12 一.前言 1.本文主要内容 2.本文环境信息与适用范围 二.PostgreSQL安 ...
- LeetCode 周赛上分之旅 #47 前后缀分解结合单调栈的贡献问题
️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...
- Redis最常见的5种应用场景
Redis作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一.对于Redis为什么那么快?以及Redis采用单线程,但为什么反而获得更高的性能的疑问,在之前的Redis为什么那么快?一文中, ...
- Linux系列教程——Shell、Linux文件管理
文章目录 Shell 1.什么是Bash shell(壳) 2.Bash Shell能干什么? 3.平时我们如何使用Shell呢? 4.Shell提示符 5.Shell基础语法 2.Bash Shel ...
- 如何查询4GL程序中创建的临时表中的数据
前提:将dba_segments这个表的select权限授权给各个营运中心(即数据库用户) ①.用sys账号以dba的权限登录数据库 <topprod:/u1/topprod/tiptop> ...