题意:

n个点m条有向边,每个点有一头牛,每头牛会沿着各自的最短路先到x点,然后又从x点到各自的点,求这些牛中间最短路程最大的牛。

思路:

从x点到各点的最短路不用说了,裸的最短路;

但是从所有点到x的最短路,那不就是路线反一下,然后求x到所有点的最短路么?

//#include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long LL;
const int N=1e3+10;
const int INF=0x3f3f3ff;
int n,m,s;
int dis[N],temp[N];
bool vis[N];
int first[N][N];
int sec[N][N]; void dijkstra1()
{
int i,j;
memset(vis,0,sizeof(vis));
int k;
for(i=1;i<=n;i++)
dis[i]=first[s][i];
vis[s]=1;
dis[s]=0;
for(i=1;i<=n-1;i++)
{
int mimi=INF;
k=0;
for(j=1;j<=n;j++)
{
if(mimi>dis[j]&&!vis[j])
{
mimi=dis[j];
k=j;
}
}
vis[k]=1;
for(j=1;j<=n;j++)
{
if(dis[j]>(dis[k]+first[k][j])&&!vis[j]&&first[k][j]!=INF)
{
dis[j]=dis[k]+first[k][j];
}
}
}
for(int i=1;i<=n;i++)
temp[i]+=dis[i];
} void dijkstra2()
{
int i,j;
memset(vis,0,sizeof(vis));
int k;
for(i=1;i<=n;i++)
dis[i]=sec[s][i];
vis[s]=1;
dis[s]=0;
for(i=1;i<=n-1;i++)
{
int mimi=INF;
k=0;
for(j=1;j<=n;j++)
{
if(mimi>dis[j]&&!vis[j])
{
mimi=dis[j];
k=j;
}
}
vis[k]=1;
for(j=1;j<=n;j++)
{
if(dis[j]>(dis[k]+sec[k][j])&&!vis[j]&&sec[k][j]!=INF)
{
dis[j]=dis[k]+sec[k][j];
}
}
}
for(int i=1;i<=n;i++)
temp[i]+=dis[i];
} int main()
{
while(~scanf("%d%d%d",&n,&m,&s))
{
int u,v,w;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j)
sec[i][j]=first[i][j]=0;
else
sec[i][j]=first[i][j]=INF;
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
first[u][v]=w;
sec[v][u]=w;
}
memset(temp,0,sizeof(temp));
dijkstra1();
dijkstra2();
int tyt=temp[1];
for(int i=2;i<=n;i++)
tyt=max(tyt,temp[i]);
printf("%d\n",tyt);
}
return 0;
}

POJ3268【最短路】的更多相关文章

  1. poj-3268最短路

    title: poj-3268最短路 date: 2018-10-13 15:54:34 tags: acm 刷题 categories: ACM-最短路 概述 这是一道最短路的模板题,,,不过虽然是 ...

  2. poj3268 最短路

    //Accepted 1124 KB 0 ms #include <cstdio> #include <cstring> #include <iostream> # ...

  3. POJ-3268(来回最短路+dijkstra算法)

    Silver Cow Party POJ-3268 这题也是最短路的模板题,只不过需要进行两次求解最短路,因为涉及到来回的最短路之和. 该题的求解关键是:求解B-A的最短路时,可以看做A是起点,这就和 ...

  4. POJ3268 Silver Cow Party Dijkstra最短路

    Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to atten ...

  5. POJ-3268.SilverCowParty.(最短路 + 图的转置)

    本题思路:对原图和原图的逆图分别用一次最短路,找出最大值即可. 一开始是我是对每个顶点spfa搜了一波,结果判题时间巨长,还好这个题的数据量不是很大,所以就用了另一种思路. 参考代码:spfa单结点爆 ...

  6. (最短路)Silver Cow Party --POJ--3268

    题目链接: http://poj.org/problem?id=3268 题意: 先求出所有牛到x的最短路,再求出x到所有牛的最短路,两者相加取最大值(单向图)(可以用迪杰斯特拉,SPFA) 迪杰斯特 ...

  7. POJ3268 Silver Cow Party【最短路】

    One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big co ...

  8. 来回最短路POJ3268

    这个题得主要考点在于给你的图是去了再回来得有向图,如何模块化解决呢就是转变图的方向,我们根据初始得放心求出每个点到x得最短路,然后转变所有路得方向再求出所有点到x得最短路,最后一相加就是最后的来回了~ ...

  9. POJ3268 Silver Cow Party —— 最短路

    题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total ...

随机推荐

  1. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  2. 美化你的APP——从Toolbar開始

    Toolbar是什么 Toolbar是Google在Android 5.0中推出的一款替代ActionBar的View.ActionBar必须得作为Activity内容的一部分,而Toolbar能够放 ...

  3. spring boot 使用redis 及redis工具类

    1-添加maven依赖 2-添加redis配置 3-工具类 1-添加maven依赖 实际上是封装了jedis <!-- redis 依赖--> <dependency> < ...

  4. [haoi2014]穿越封锁线

    这题需要注意的一点是射线法需要考虑边界,而且题目对边界的限制极为严格. dcmp(v[i%n].x-x)<=0&&dcmp(v[(i+1)%n].x-x)>0 dcmp(v ...

  5. NOIP2015_提高组Day2_3_运输计划

    这题思路很简单: 先对每个询问求距离,对距离由大到小排序, 二分最小距离,验证是否可行,验证时用差分处理: #include<iostream> #include<cstring&g ...

  6. BZOJ2120 数颜色 —— 待修改莫队

    题目链接:https://vjudge.net/problem/HYSBZ-2120 2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit:  ...

  7. 测试,测试开发,QA,QM,QC--------- 测试之路勿跑偏

    测试,测试开发,QA,QM,QC可能是测试行业里的细分角色了,加了不少群学习,看到不同人有对自己不同的角色定位.我也做了这挺长时间的测试,也和大部分测试同胞一样,为了一份好的工作学习各种各样的技术,但 ...

  8. "未预编译文件 因此不能请求该文件"问题处理

    手里一个项目重新编译后发布,访问时提示未预编译文件“default.aspx”, 因此不能请求该文件.综合网上的解决方法,做了如下操作: 1.重新安装了AJAX Extension: 2.项目添加引用 ...

  9. Ansible 动态获取主机列表

    参考文献: http://www.linuxidc.com/Linux/2016-12/138111.htm 附加 这个 include_vars 变量,可以 动态分别环境或者其他条件- hosts: ...

  10. codeforces B. Multitasking 解题报告

    题目链接:http://codeforces.com/problemset/problem/384/B 题目意思:给出n个数组,每个数组包括m个数字,当k = 0 时,需要把n个数组都按照从小到大的顺 ...