[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 ...
随机推荐
- 我也来扒一扒python的内存回收机制!
python的内存回收是面试中经常会问到一个问题,今天我来给大家深度剖析下python的内存回收和缓存机制 1.引用计数器 我们知道,python是通过引用计数器来做内存回收的,下面我们来重点讲下引用 ...
- SSM登录操作
1.编写实体类 略 2. 写mapper映射文件 通过名字查询 通过ID主键查询... 略 写dao CRUD相关抽象方法 List<Student> getAll(); Student ...
- Robot 框架学习笔记
Robot 框架学习笔记 为了更好地让读者理解快速学习新框架的思路,笔者接下来会继续介绍另一个名为 Robot 的自动化测试框架,希望读者能参考笔者从零开始讲解一个开发/测试框架的流程,从中总结出适合 ...
- 《SQL与数据库基础》05. SQL-DCL
目录 DCL 用户管理 权限控制 本文以 MySQL 为例 DCL 用户管理 查询有哪些用户: 1. USE mysql; SELECT * FROM user; 2. SELECT * FROM m ...
- MATLAB入门小操作(数据类型)
这是一篇有助于快速上手MATLAB软件的文章(新手向).(学习过其他的语言更容易看懂) 数据类型 这篇文章我想从MATLAB中的数据类型出发去列举一些经常使用的操作.MATLAB中的数据类型包括其他语 ...
- C#结合OpenCVSharp4图片相似度识别
OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...
- Unity 游戏开发、01 基础篇 | 阿发入门篇全课程学习笔记
Unity Documentation .全课程视频 .第15,24章视频 afanihao Unity入门,全课程内容个人学习笔记,简单部分一笔带过,重点内容带 2.3 窗口布局 Unity默认窗口 ...
- webapi开发框架实践
项目链接以及目录结构 liuzhixin405/efcore-template (github.com) 这是一个纯webapi的开发框架. 1.支持的orm有efcore6.dapper,可以灵活切 ...
- PYQT5学习(12)Qtabwidget 选项卡及其窗口,Qstackedwidget和Qtabwidget的效果类似,以及系统托盘QsystemtrayIcon
参考博文:https://blog.csdn.net/jia666666/article/details/81669092QTabWidget控件提供一个选项卡和一个页面区域,默认显示第一个选项卡的页 ...
- @RequiredArgsConstructor和@Authwired
我们在java后端书写接口时,对service层成员变量的注入和使用有以下两种实现方式: 1) @RequiredArgsConstructor import lombok.RequiredArgsC ...