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 ...
随机推荐
- 九度OJ 1127:简单密码 (翻译)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1218 解决:721 题目描述: Julius Caesar曾经使用过一种很简单的密码. 对于明文中的每个字符,将它用它字母表中后5位对应的 ...
- Win32对话框工程笔记
Main.cpp #include <Windows.h> #include "resource.h" INT_PTR CALLBACK dialogProc(HWND ...
- hdu1427 速算24点
</pre><pre> //#pragma comment(linker, "/STACK:102400000,102400000") //HEAD #in ...
- OpenMeetings安装
OpenMeetings是一个开源的视频会议软件. 它是基于OpenLaszlo’s的新流媒体格式和开源的Flash服务器---Red5! 采用了flash流媒体服务器Red5+OpenMeeting ...
- xml 基础属性
xml属性 对应的方法 说明 android:alpha setAlpha(float) 设置组件的透明度(0——1) android:background setBackgroundResource ...
- CoreGraphics(转)
2.CoreGraphics 上面我们讲过,UIBezierPath是CoreGraphics的封装,使用它可以完成大部分的绘图操作,不过更底层的CoreGraphics更加强大. CoreGraph ...
- IC卡、ID卡、M1卡、射频卡的区别是什么
IC卡.ID卡.M1卡.射频卡都是我们常见的一种智能卡,但是很多的顾客还是不清楚IC卡.ID卡.M1卡.射频卡的区别是什么,下面我们一起来看看吧. 所谓的IC卡就是集成电路卡,是继磁卡之后出现的又一种 ...
- CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)
本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE ...
- maven项目所遇到的问题解决
1.在Eclipse中创建Maven的Web项目时出现错误:An internal error occurred during: "Retrieving archetypes:". ...
- Nginx基本配置和作用
nginx可以重新加载文件的.我们直接运行:nginx -s reload 配置文件有没有问题,可以直接输入:nginx -t nginx -s stop就可以关闭 但有时我们就不想它挂的时候访问另外 ...