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 农场派对的更多相关文章

  1. 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 ...

  2. 农场派对(party)(信息学奥赛一本通 1497)

    [题目描述] N(1≤N≤1000)头牛要去参加一场在编号为 x(1≤x≤N) 的牛的农场举行的派对.有 M(1≤M≤100000) 条有向道路,每条路长 Ti(1≤Ti≤100):每头牛都必须参加完 ...

  3. loj题目总览

    --DavidJing提供技术支持 现将今年7月份之前必须刷完的题目列举 完成度[23/34] [178/250] 第 1 章 贪心算法 √ [11/11] #10000 「一本通 1.1 例 1」活 ...

  4. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  5. LOJ 一本通一句话题解系列:

    第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...

  6. Noip2019暑期训练2

      题目名称 骑士遍历 和谐俱乐部 农场派对 对称二叉树 存盘文件名 knight Beautiful party tree 输入文件名 knight.in Beautiful.in party.in ...

  7. 洛谷银牛派对SPFA

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  8. 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 ...

  9. 洛谷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 ...

随机推荐

  1. Java Tree 树 数据结构

    说到树结构就不得不回顾 链表结构 https://www.cnblogs.com/easyidea/p/13371863.html 如果链表结构中再多一个指针会是什么情况? 是不是像树根一样,这就是 ...

  2. JavaScript CMD规范

    CMD是另一种js模块化方案,它与AMD很类似,不同点在于:AMD 推崇依赖前置.提前执行,CMD推崇依赖就近.延迟执行.此规范其实是在sea.js推广过程中产生的. AMD规范请移步AMD 模块化规 ...

  3. [ABP教程]第五章 授权

    原文档 地址: Web Application Development Tutorial - Part 5: Authorization 关于此教程 在这个教程系列中,您将构建一个基于ABP的Web应 ...

  4. JVM故障处理工具,使用总结

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 用都用不到怎么学? 没有场景.没有诉求,怎么学习这些似乎用不上知识点. 其实最好的方 ...

  5. Java JVM——9.方法区

    前言 方法区是运行时数据区的最后一个部分: 从线程共享与否的角度来看: 大家可能在这里有些疑惑,方法区和元空间的关系到底是怎样的?请往下看,下面会为大家解惑. 栈.堆.方法区的交互关系 下面就涉及了对 ...

  6. Python+Docker+Flask+pyecharts实现数据可视化

    1.数据加工pyecharts图实现: 数据源:本地CSV文件 ps:由于是跟生产环境做交互,生产环境指标由HSQL加工,使用存储过程挂后台定时运行,后使用python实现导出及定时分发,本地pyth ...

  7. Linux 用户操作之用户管理 (用户增删改操作)

    目录 添加用户 删除用户 修改用户 切换用户 配置用户密码 查看配置文件 cat /etc/pwsswd 添加用户 可选项 -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果 ...

  8. xtrabackup不完全恢复

    例如,在2014年6月26日下午14:00的时候有人误操作drop掉了一张表,由于库不是很大,并且为测试库,并没有访问,这个时候,我们可以进行基于位置和时间点的不完全恢复 先找到早上的备份,查看那xt ...

  9. Celery--短信与邮件

    1 Celery 实现短信--邮件 1.1 容联云-短信 from ronglian_sms_sdk import SmsSDK accountSid = '8a216da8757784cd01759 ...

  10. 【Oracle】row_number() over(partition by )函数用法

    row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...