POJ3268【最短路】
题意:
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【最短路】的更多相关文章
- poj-3268最短路
title: poj-3268最短路 date: 2018-10-13 15:54:34 tags: acm 刷题 categories: ACM-最短路 概述 这是一道最短路的模板题,,,不过虽然是 ...
- poj3268 最短路
//Accepted 1124 KB 0 ms #include <cstdio> #include <cstring> #include <iostream> # ...
- POJ-3268(来回最短路+dijkstra算法)
Silver Cow Party POJ-3268 这题也是最短路的模板题,只不过需要进行两次求解最短路,因为涉及到来回的最短路之和. 该题的求解关键是:求解B-A的最短路时,可以看做A是起点,这就和 ...
- POJ3268 Silver Cow Party Dijkstra最短路
Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to atten ...
- POJ-3268.SilverCowParty.(最短路 + 图的转置)
本题思路:对原图和原图的逆图分别用一次最短路,找出最大值即可. 一开始是我是对每个顶点spfa搜了一波,结果判题时间巨长,还好这个题的数据量不是很大,所以就用了另一种思路. 参考代码:spfa单结点爆 ...
- (最短路)Silver Cow Party --POJ--3268
题目链接: http://poj.org/problem?id=3268 题意: 先求出所有牛到x的最短路,再求出x到所有牛的最短路,两者相加取最大值(单向图)(可以用迪杰斯特拉,SPFA) 迪杰斯特 ...
- 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 ...
- 来回最短路POJ3268
这个题得主要考点在于给你的图是去了再回来得有向图,如何模块化解决呢就是转变图的方向,我们根据初始得放心求出每个点到x得最短路,然后转变所有路得方向再求出所有点到x得最短路,最后一相加就是最后的来回了~ ...
- POJ3268 Silver Cow Party —— 最短路
题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
随机推荐
- 我在开发第一个Swift App过程中学到的四件事
本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/ 译者注:本文作者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Sw ...
- 【BZOJ2561】最小生成树 最小割
[BZOJ2561]最小生成树 Description 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在 ...
- Erlang function guards NOTE
Note: I've compared , and ; in guards to the operators andalso and orelse. They're not exactly the s ...
- 常用的Css命名方式
常用的Css命名方式: CSS命名规范: 1.文件命名规范 全局样式:global.css: 框架布局:layout.css: 字体样式:font.css: 链接样式:link.css: 打印样式:p ...
- LightOJ1213 Fantasy of a Summation —— 快速幂
题目链接:https://vjudge.net/problem/LightOJ-1213 1213 - Fantasy of a Summation PDF (English) Statisti ...
- Java生成UUID不重复的id值
在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());
- python写excel
例一,普通写入: # -*-coding: utf-8-*- import xlwt workbook = xlwt.Workbook() sheet = workbook.add_sheet('sh ...
- android:textAppearance
Android之系统自带的文字外观设置及实际显示效果图 android:textAppearancexml布局里面设置文字的外观: 如“android:textAppearance=“?android ...
- ACM2016级新生第三周训练赛
本次是弱校题解-比赛链接 备用链接 题目还是比较基础,比较简单.认真补题,学会学习. A -人见人爱A^B 题解: 求 A的B次方,我们可以用循环进行累乘操作,进而计算出次方.因为题目要求只需要求出最 ...
- C++模板之函数模板实例化和具体化
模板声明 template<typename/class T>, typename比class最近后添加到C++标准. 常规模板,具体化模板,非模板函数的优先调用顺序. 非模板函数(普通 ...