LOJ10075 农场派对
USACO 2007 Feb. Silver
N(1≤N≤1000) 头牛要去参加一场在编号为 x(1≤x≤N) 的牛的农场举行的派对。有 M(1≤M≤100000) 条有向道路,每条路长Ti(1≤Ti≤100);每头牛都必须参加完派对后回到家,每头牛都会选择最短路径。求这 N 头牛的最短路径(一个来回)中最长的一条的长度。 特别提醒:可能有权值不同的重边。
输入格式
第 1 行:3 个空格分开的整数 N,M,X;
第 2…M+1 行:3 个空格分开的整数 Ai,Bi,Ti,表示有一条从Ai 到 Bi 的路,长度为 Ti。
输出格式
一行一个数,表示最长最短路的长度。
样例
样例输入
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
样例输出
10
_______________________________________________________________________________
两次dij,求得起始点到其他点的最短距离。
记得翻边。
_______________________________________________________________________________
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1010;
4 const int maxm=1e5+10;
5 int n,m,k;
6 struct edge
7 {
8 int u,v,w,nxt;
9 }e[maxm],ee[maxm];
10 int js,jss,head[maxn],headd[maxn];
11 void addage(int u,int v,int w)
12 {
13 e[++js].u=u;e[js].v=v;e[js].w=w;
14 e[js].nxt=head[u];head[u]=js;
15 }
16 void addagee(int u,int v,int w)
17 {
18 ee[++jss].u=u;ee[jss].v=v;ee[jss].w=w;
19 ee[jss].nxt=headd[u];headd[u]=jss;
20 }
21 int diss[maxn],dis[maxn];
22 bool vis[maxn],viss[maxn];
23 struct node
24 {
25 int dis,p;
26 bool operator < (node b)const
27 {
28 return dis>b.dis;
29 }
30 };
31 void dij(int x)
32 {
33 memset(dis,0x3f,sizeof dis);
34 dis[x]=0;
35 priority_queue< node >q;
36 q.push((node){0,x});
37 while(!q.empty())
38 {
39 node t=q.top();
40 q.pop();
41 int d=t.dis,u=t.p;
42 if(vis[u])continue;
43 vis[u]=1;
44 for(int i=head[u];i;i=e[i].nxt)
45 {
46 int v=e[i].v;
47 if(dis[v]>dis[u]+e[i].w)
48 {
49 dis[v]=dis[u]+e[i].w;
50 q.push((node){dis[v],v});
51 }
52 }
53 }
54 }
55 void dijs(int x)
56 {
57 memset(diss,0x3f,sizeof diss);
58 diss[x]=0;
59 priority_queue<node>q;
60 q.push((node){0,x});
61 while(!q.empty())
62 {
63 node t=q.top();
64 q.pop();
65 int d=t.dis,u=t.p;
66 if(viss[u])continue;
67 viss[u]=1;
68 for(int i=headd[u];i;i=ee[i].nxt)
69 {
70 int v=ee[i].v;
71 if(diss[v]>diss[u]+ee[i].w)
72 {
73 diss[v]=diss[u]+ee[i].w;
74 q.push((node){diss[v],v});
75 }
76 }
77 }
78 }
79 int main()
80 {
81 scanf("%d%d%d",&n,&m,&k);
82 for(int u,v,w,i=0;i<m;++i)
83 {
84 scanf("%d%d%d",&u,&v,&w);
85 addage(u,v,w);
86 addagee(v,u,w);
87 }
88 dij(k);
89 dijs(k);
90 int ans=0;
91 for(int i=1;i<=n;++i)ans=max(ans,dis[i]+diss[i]);
92 cout<<ans;
93 return 0;
94 }
LOJ10075 农场派对的更多相关文章
- poj3268 Silver Cow Party(农场派对)
题目描述 原题来自:USACO 2007 Feb. Silver N(1≤N≤1000)N (1 \le N \le 1000)N(1≤N≤1000) 头牛要去参加一场在编号为 x(1≤x≤N)x(1 ...
- 农场派对(party)(信息学奥赛一本通 1497)
[题目描述] N(1≤N≤1000)头牛要去参加一场在编号为 x(1≤x≤N) 的牛的农场举行的派对.有 M(1≤M≤100000) 条有向道路,每条路长 Ti(1≤Ti≤100):每头牛都必须参加完 ...
- loj题目总览
--DavidJing提供技术支持 现将今年7月份之前必须刷完的题目列举 完成度[23/34] [178/250] 第 1 章 贪心算法 √ [11/11] #10000 「一本通 1.1 例 1」活 ...
- CSU训练分类
√√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...
- LOJ 一本通一句话题解系列:
第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...
- Noip2019暑期训练2
题目名称 骑士遍历 和谐俱乐部 农场派对 对称二叉树 存盘文件名 knight Beautiful party tree 输入文件名 knight.in Beautiful.in party.in ...
- 洛谷银牛派对SPFA
题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...
- P1821 [USACO07FEB]银牛派对Silver Cow Party
题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...
- 洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party
题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...
随机推荐
- jmeter+jdk环境配置
一:JDK 安装配置:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html ,下载JDK8 安装 1. ...
- JavaDailyReports10_12
运算级自增自减运算符大于取值运算符*,大于取地址运算符! 1 #include<stdio.h> 2 #include<string.h> 3 #define OK 1 4 # ...
- 有关CSS 定位中的盒装模型、position、z-index的学习心得
开始整体之前我需要说明两个概念: 第一个就是 一切皆为框 也就是说在HTML中的不管是是块级的还是内联的,都可以认为成块的,唯一的区别就是块的会独自占据一行 第二个文档流: 一个网页可以看作是 ...
- Windows系统设置多用户同时远程登录
一.在键盘上按Win+R键(也可以在开始菜单右键然后选择运行),在运行的输入框里面输入"gpedit.msc"命令.然后点击确定 二.在"计算机组策略"中依次展 ...
- vue踩坑记,持续更新中......
1.运行项目报错 you may use special comments to disable some waring. use //eslint-disable-next-line.....吧啦吧 ...
- Ubuntu无法ssh远程连接问题 (转)
[系统]Ubuntu 12.04 server [问题描述]新安装的Ubuntu系统无法直接通过ssh远程连接. [解决办法] 新安装的Ubuntu系统并未安装ssh-server服务,需要自行安装, ...
- 风炫安全WEB安全学习第二十一节课 存储型XSS讲解
风炫安全WEB安全学习第二十一节课 存储型XSS讲解 存储型XSS演示 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存 ...
- Nexus3.X在linux系统搭建maven私服
准备工作: 1.linux服务器上需安装jdk(非yum下来的open_jdk!!!,版本1.8以上) 2.linux服务器上需安装maven(如不会,请点击链接,maven版本自己喜欢就好) 准备工 ...
- 用python+sklearn(机器学习)实现天气预报数据 数据
用python+sklearn机器学习实现天气预报 数据 项目地址 系列教程 勘误表 0.前言 1.爬虫 a.确认要被爬取的网页网址 b.爬虫部分 c.网页内容匹配取出部分 d.写入csv文件格式化 ...
- 为linux添加一块新硬盘并分区
一---如何增加一块硬盘1:虚拟机添加硬盘2:分区3:格式化4:挂载5:设置可以自动挂载 1---设置里面 2---分区命令 fdisk /dev/sdb开始分区m显示命令列表p显示磁盘分区 同fdi ...