【题目描述】

N(1≤N≤1000)头牛要去参加一场在编号为 x(1≤x≤N) 的牛的农场举行的派对。有 M(1≤M≤100000) 条有向道路,每条路长 Ti(1≤Ti≤100);每头牛都必须参加完派对后回到家,每头牛都会选择最短路径。求这 N头牛的最短路径(一个来回)中最长的一条的长度。 特别提醒:可能有权值不同的重边。

【输入】

第 1行:3 个空格分开的整数 N,M,X;

第 2…M 行:3 个空格分开的整数 Ai,Bi,Ti ​​,表示有一条从 Ai 到 Bi的路,长度为 Ti。

【输出】

一行一个数,表示最长最短路的长度(<231-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

【输出样例】

10


用spfa求从x到各点的最短路径(di[i])以及从各点到x的最短路径(d[x]),并用邻接表进行优化

 #include<bits/stdc++.h>
using namespace std;
struct node{
int to,next,w;
}a[];
queue<int>q;
int n,m,x,num,head[],ma=-,mi,cnt;
int d[],z[][],di[];
bool b[];
void add(int from,int to,int w)
{
a[++cnt].to=to;
a[cnt].next=head[from];
a[cnt].w=w;
head[from]=cnt;
}
void spfa(int s)
{
memset(d,,sizeof(d));
d[s]=;b[s]=true;
q.push(s);
while(!q.empty())
{
int u=q.front();q.pop();
for(int i=head[u];i;i=a[i].next)
{
int to=a[i].to;
if(d[to]>d[u]+a[i].w)
{
d[to]=d[u]+a[i].w;
if(!b[to])
{
b[to]=true;
q.push(to);
}
}
}
b[u]=false;//别忘了这句话
}
}
int main()
{
//freopen("party.in","r",stdin);
//freopen("party.out","w",stdout);
cin>>n>>m>>x;
for(int i=;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
add(a,b,c);
}
spfa(x);//从x到各点的最短路径
memcpy(di,d,sizeof d);//将数组d的值全部复制给di
for(int i=;i<=n;i++)
{
if(i!=x)
{
spfa(i);//各点到x的最短路径
ma=max(ma,d[x]+di[i]);//求最短中的最长
}
}
cout<<ma;
return ;
}

农场派对(party)(信息学奥赛一本通 1497)的更多相关文章

  1. $ybt\ 【信息学奥赛一本通】题解目录$

    [信息学奥赛一本通]题解目录 $ \large -> OJ$ $ problem1000 $ \(Answer\) - > $ \large 1000$ $ problem1001 $ \ ...

  2. 2019寒假练题计划——LibreOJ刷题计划 &《信息学奥赛一本通》提高版题目

    目录 2019.1.27 #10082. 「一本通 3.3 例 1」Word Rings 题意 思路 #10083. 「一本通 3.3 例 2」双调路径 题意 思路 #10084. 「一本通 3.3 ...

  3. 【信息学奥赛一本通】第三部分_队列 ex2_3produce 产生数

    给出一个整数n(n<=2000)(代码可适用n<=10^31)和k个变换规则(k<=15). 规则:1.1个数字可以变换成另1个数字: 2.规则中右边的数字不能为零. BFS #in ...

  4. 信息学奥赛一本通算法(C++版)基础算法:高精度计算

    高精度加法(大位相加) #include <bits/stdc++.h> using namespace std; int main() { ],b1[]; ],b[],c[];//a,b ...

  5. 食物链【NOI2001】(信息学奥赛一本通 1390)

    [题目描述] 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...

  6. Biorhythms(信息学奥赛一本通 1639)

    题目描述: 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏 ...

  7. 信息学奥赛一本通 提高篇 序列第k个数 及 快速幂

    我是传送门 这个题首先是先判断是等差还是等比数列 等差的话非常简单: 前后两个数是等差的,举个栗子: 3 6 9 12 这几个数,(我感觉 1 2 3 4并说明不了什么) 每次都加3嘛,很容易看出,第 ...

  8. 【NOI2002】荒岛野人(信息学奥赛一本通 1637)(洛谷 2421)

    题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi ...

  9. X-factor Chain(信息学奥赛一本通 1628)

    题目描述 输入正整数 x,求 x 的大于 1 的因子组成的满足任意前一项都能整除后一项的序列的最大长度,以及满足最大长度的序列的个数. 输入 多组数据,每组数据一行,包含一个正整数 x. 对于全部数据 ...

随机推荐

  1. bat命令复制文件

    del HDT675.applicationdel setup.exedel publish.htmRD /S /Q "Application Files"xcopy /E \\1 ...

  2. Java实现树的遍历以及打印(递归,非递归)

    import java.util.LinkedList; import java.util.Stack; public class BinarySearchTree1<E extends Com ...

  3. Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块

    Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: ​ 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...

  4. AngularJS 插值字符串 $interpolate

    定义: $interpolate:编译一段带有嵌入标记的语句,然后返回一个interpolate(插值)函数.使用: $interpolate(text,[mustHaveException],[tr ...

  5. element-ui select多选情况下获取label和value

    直接上代码 <el-select v-model="value" multiple collapse-tags ref="select" @change= ...

  6. QuickStart系列:Docker部署PostgreSQL

    docker镜像地址: https://hub.docker.com/_/postgres/ https://www.widuu.com/chinese_docker/examples/postgre ...

  7. 判断CPU大小端示例代码

    #include <stdio.h> int checkCPU() { union w{ int a; char b; }c; c.a = ; ); } int main() { prin ...

  8. Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建

    Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...

  9. hadoop分布式集群环境搭建

    参考 http://www.cnblogs.com/zhijianliutang/p/5736103.html 1 wget http://mirrors.shu.edu.cn/apache/hado ...

  10. 小程序~WeUI下载使用

    [1]简介 因为小程序的api描述都比较简单,并没有wxml及wxss的描述,一定会想小程序有没有一个UI库,类似于前端中的Bootstrap,MD,Semantic UI这样的框架UI库.有的,它就 ...