[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入门》03. Web 21~30
@ 目录 web21 题解 原理 web22 题解 原理 web23 题解 原理 web24 题解 原理 web25 题解 原理 web26 题解 web27 题解 web28 题解 web29 题解 ...
- MIT 6.828 Lab实验记录 —— lab1 Booting PC
实验参考信息 MIT 6.828 lab1 讲义地址 MIT 6.828 课程 Schedule MIT 6.828 lab 环境搭建参考 MIT 6.828 lab 工具guide Brennan' ...
- JWT(Json Wen Token)原理剖析
JWT(即json web token),大家先看下面这张图 大家可以观察到,jwt String就是生成后的jwt字符集,其中有两个 "."(注意:jwt校验会对".& ...
- 问题总结:浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断
浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断. 说明:浮点数采用"尾数+阶码"的编码方式,类似于科学计数法的"有效数字+指数& ...
- Fetch设置超时请求
promise + fetch + AbortController + setTimeOut 这是一段正常的fetch请求 fetch('www.baidu.com',{}) .then(res=&g ...
- Solution Set -「ABC 183」
本来十分抗拒,但 GM 强制. 「ABC 183A」ReLU Link. 略. #include<cstdio> int main() { long long n; scanf(" ...
- python判断ip所属地区 python 判断ip 网段
IP地址是互联网中唯一标识一个设备的地址,有时候需要判断一个IP地址所属的地区,这就需要用到IP地址归属查询.本文将介绍Python如何通过IP地址查询所属地区并展示代码. 一. IP地址归属查询 I ...
- oracle 验证流水存在性火箭试优化
在生产中经常遇到"select * from tbl_IsExist where date=?"的SQL,经与开发人员沟通得知此SQL是验证流水存在性,若不存在则插入,若存在退出 ...
- oracle:ORA-14765建索引阻塞创建分区及处理步骤
在生产库建立一个索引,报ORA-14765创建索引时不能创建分区,也就是索引的创建阻塞分区的建立. 处理步骤: 1.与开发人员沟通昨天下午在Tbl_Waste表上建索引,一直未返回成功,定位问题SQL ...
- MySQL PXC集群新增一个高版本节点
已有的一个 MySQL PXC 集群环境,因为种种原因仅剩一个节点 node1,需要新增一个集群节点 node2. node1 版本:donor version (8.0.21) node2 版本:l ...